当前位置: 首页 > news >正文

【从零开始入门unity游戏开发之——C#篇44】C#补充知识——var隐式类型、初始化器、匿名类型

文章目录

  • 一、`var`隐式类型
    • 1、var 的基本用法
    • 2、注意
    • 3、总结
  • 二、初始化器
    • 1、类定义
    • 2、对象初始化器
    • 3、集合初始化
      • 3.1 数组初始化
      • 3.2 List<T> 初始化
      • 3.3 Dictionary<TKey, TValue> 初始化
  • 三、匿名类型
    • 1、示例代码
    • 2、匿名类型的限制:
  • 专栏推荐
  • 完结

一、var隐式类型

var是一种特殊的变量类型,它可以用来表示任意类型的变量。

1、var 的基本用法

var number = 10; // 隐式推断为 int 类型
var name = "Alice"; // 隐式推断为 string 类型

2、注意

  • var必须初始化
    -
  • var不能作为类的成员只能用于临时变量申明时,也就是一般写在函数语句块中
    在这里插入图片描述

3、总结

虽然 var 是 C# 中一个非常有用的工具,可以提高代码的简洁性和可维护性,但过度或不当使用会降低代码的可读性和清晰度,特别是在类型不容易推断或变量意义不明确时。因此,最佳实践是根据上下文决定是否使用 var,并且在类型显而易见或代码更简洁时使用 var,否则建议显式声明类型,以提高代码的可读性和维护性。

不过个人建议还是少用var


二、初始化器

申明对象时,可以通过直接写大括号的形式初始化公共成员遍历和属性

1、类定义

首先,我们定义了一个 Test 类,它有一些字段、公共属性和构造函数。注意,i1 是私有字段,不能通过对象初始化器直接赋值;而 i2、str 和 Name 都是公有的,可以通过初始化器赋值。

class Test 
{private int i1;  // 私有字段,不能通过对象初始化器赋值public int i2;   // 公共字段,可以通过对象初始化器赋值public string str;  // 公共字段,可以通过对象初始化器赋值public string Name { get; set; }  // 公共属性,可以通过对象初始化器赋值// 无参构造函数public Test() { }// 有参构造函数,接受一个参数 i1public Test(int i1) {this.i1 = i1;  // 初始化私有字段}
}

2、对象初始化器

我们可以在创建对象时直接为公共成员赋值。

  • 无参构造函数的初始化

    Test test3 = new Test() { i2 = 2, str = "内容", Name = "向宇的客栈"};
    

    括号的使用是可选的,因为调用无参构造函数时,new Test {}new Test() {}是等价的。括号的存在主要是为了增强可读性或在一些情况下要求明确调用构造函数。

    Test test2 = new Test { i2 = 2, str = "内容", Name = "向宇的客栈"};
    
  • 有参构造函数的初始化

    Test test4 = new Test(100) { i2 = 2, str = "内容", Name = "向宇的客栈"};
    

3、集合初始化

在 C# 中,集合初始化是一种非常常见的操作,可以在声明集合对象的同时直接为其元素赋初值。这种方式简洁高效,常用于数组、List 和 Dictionary 的初始化。

申明集合对象(比如数组、列表、字典)时,也可以通过大括号,直接初始化内部属性

3.1 数组初始化

  • 显式指定大小并初始化:

    int[] array1 = new int[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    
  • 推断大小并初始化:

    int[] array2 = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    
  • 省略 new,直接初始化:

    int[] array3 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    

3.2 List 初始化

List<Test> list = new List<Test> { test1, test2, test3, test4 };

3.3 Dictionary<TKey, TValue> 初始化

Dictionary<int, string> dir = new Dictionary<int, string> {{ 1, "向宇1" },{ 2, "向宇2" },{ 3, "向宇3" }
};

三、匿名类型

在 C# 中,匿名类型 是一种没有显式类型名称的类型。它通常用于快速创建仅包含数据的对象,一旦初始化后,其属性值就不能再改变。

1、示例代码

// 定义匿名类型,并初始化属性
var v = new { age = 10, name = "向宇", sex = "男" };// 访问匿名类型的属性
Console.WriteLine(v.age);   // 输出: 10
Console.WriteLine(v.name);  // 输出: 向宇
Console.WriteLine(v.sex);   // 输出: 男

2、匿名类型的限制:

  • var 类型推断:匿名类型需要使用 var 关键字来声明变量,因为匿名类型没有显式的类型名称。这样编译器可以自动推断出正确的类型。

  • 不能修改属性:匿名类型的属性是只读的,所以无法在后续代码中修改其值。例如,以下代码会导致编译错误:

    v.age = 20;  // 错误:无法修改只读属性
    
  • 只能包含属性(字段):匿名类型是用来存储数据的简单容器,它只能包含属性(字段),不能包含方法、事件或构造函数。


专栏推荐

地址
【从零开始入门unity游戏开发之——C#篇】
【从零开始入门unity游戏开发之——unity篇】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架开发】

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述

相关文章:

【从零开始入门unity游戏开发之——C#篇44】C#补充知识——var隐式类型、初始化器、匿名类型

文章目录 一、var隐式类型1、var 的基本用法2、注意3、总结 二、初始化器1、类定义2、对象初始化器3、集合初始化3.1 数组初始化3.2 List<T> 初始化3.3 Dictionary<TKey, TValue> 初始化 三、匿名类型1、示例代码2、匿名类型的限制&#xff1a; 专栏推荐完结 一、v…...

Spring Boot 中 TypeExcludeFilter 的作用及使用示例

在Spring Boot应用程序中&#xff0c;TypeExcludeFilter 是一个用于过滤特定类型的组件&#xff0c;使之不被Spring容器自动扫描和注册为bean的工具。这在你想要排除某些类或类型&#xff08;如配置类、组件等&#xff09;而不希望它们参与Spring的自动装配时非常有用。 作用 …...

解锁kafka组件安全性解决方案:打造全方位安全防线

文章目录 前言安全漏洞修复权限管理身份验证数据传输数据存储 前言 Kafka组件的安全性解决方案旨在保护Kafka集群免受未经授权访问、数据泄露、知识产权问题和竞争法问题的侵害。提高开源中间件的安全性和稳定性&#xff0c;包括安全漏洞修复、权限管理、身份验证等方面的内容…...

【C++数据结构——图】最小生成树(头歌实践教学平台习题) 【合集】

目录&#x1f60b; 任务描述 相关知识 带权无向图 建立邻接矩阵 Prim算法 1. 算法基本概念 2. 算法背景与目标 3. 算法具体步骤 4. 算法结束条件与结果 测试说明 通关代码 测试结果 任务描述 本关任务&#xff1a;编写一个程序求图的最小生成树。 相关知识 为了完成…...

Java(1)入门基础

1. Java简介 1.1 什么是Java Java 是一款由Sun Microsystems公司&#xff08;现为甲骨文公司Oracle Corporation的一部分&#xff09;的James Gosling及其团队在1995年发布的高级编程语言。同时&#xff0c;Java 是一种面向对象的语言&#xff0c;这意味着它允许开发者通过创…...

2024.1.5总结

今日不开心:这周本来想花点时间学习的&#xff0c;没想到全都花在刷视频&#xff0c;外出消费去了。 今日思考: 1.找对象这件事确实不能强求&#xff0c;顺其自然吧&#xff0c;单身和不单身&#xff0c;其实&#xff0c;各有各的利弊。在一次坐地铁的过程中&#xff0c;我一…...

【C语言程序设计——循环程序设计】枚举法换硬币(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 一、循环控制 / 跳转语句的使用 1. 循环控制语句&#xff08;for 循环&#xff09; 2. 循环控制语句&#xff08;while 循环&#xff09; 3. 跳转语句&#xff08;break 语句&#xff09; 4. 跳转语句&#xff08;continue 语句&…...

在调用 borrowObject 方法时,Apache Commons Pool 会根据连接池的配置触发一系列相关的方法

在调用 borrowObject 方法时&#xff0c;Apache Commons Pool 会根据连接池的配置触发一系列相关的方法 1. GrpcChannel 的概念 GrpcChannel 是 gRPC 客户端与服务器之间通信的核心组件。它是基于 HTTP/2 的连接&#xff0c;支持多路复用&#xff0c;即通过单个通道可以发送多…...

Linux中的tty和pts概念和区别

目录 1、什么是tty &#xff08;1&#xff09;tty的概念 &#xff08;2&#xff09;tty0 &#xff08;3&#xff09;tty1~6 2、什么是pts &#xff08;1&#xff09;pts的含义 &#xff08;2&#xff09;pts的具体解释 3、pts与 tty 设备的比较 4、设备文件的位置 1、什…...

【SOC 芯片设计 DFT 学习专栏 -- RTL 中的信号名和 Netlist 中的信号名差异】

Overview 本文将介绍 soc 设计中 RTL-to-Netlist 映射及 RTL 中的信号名和 Netlist 中的信号名差异&#xff0c; 在 SoC设计中&#xff0c;RTL-to-Netlist映射 是从RTL&#xff08;Register Transfer Level&#xff09;代码转换为Netlist的过程。这通常涉及将用硬件描述语言&…...

机器学习经典算法——线性回归

目录 算法介绍 一元线性回归模型 多元线性回归模型 ​误差项分析 相关系数 算法案例 一元线性回归预测——广告销售额案例 二元线性回归预测——血压收缩案例 多元线性回归预测——糖尿病案例 算法介绍 线性回归是利用数理统计中回归分析&#xff0c;来确定两种或两种…...

MLU上使用MagicMind GFPGANv1.4 onnx加速!

文章目录 前言一、平台环境准备二、环境准备1.GFPGAN代码处理2.MagicMind转换修改env.sh修改run.sh参数解析运行 3.修改后模型运行 前言 MagicMind是面向寒武纪MLU的推理加速引擎。MagicMind能将人工智能框架&#xff08;TensorFlow、PyTorch、Caffe与ONNX等&#xff09;训练好…...

VulnHub—potato-suncs

使用命令扫描靶机ip arp-scan -l 尝试访问一下ip 发现一个大土豆没什么用 尝试扫描一下子域名 没有发现什么有用的信息 尝试扫描端口 namp -A 192.168.19.137 -p- 尝试访问一下端口,发现都访问不进去 查看源代码发现了网页的标题 potato&#xff0c;就想着爆破一下密码 hydr…...

【Flink CDC】Flink CDC的Schema Evolution表结构演变的源码分析和流程图

Flink CDC版本&#xff1a;3.2.1 说明&#xff1a;本文从SchemaOperator接收到&#xff0c;表结构变更事件开始&#xff0c;表结构变更事件应由source端产生&#xff0c;本文不讨论。 可以先看流程图&#xff0c;研究源码。 参考文章&#xff1a; Flink cdc3.0动态变更表结构—…...

【智能算法】改进蚁狮优化算法【matlab】

目录 1 主要内容 2 部分程序 3 程序结果 下载链接 1 主要内容 该程序方法复现《改进蚁狮算法的无线传感器网络覆盖优化》两种改进算法模型&#xff0c;即原始ALO算法的基础上添加了两种改进策略&#xff1a; - 改进1&#xff1a;将原先的间断性边界收缩因子变为连续性边界…...

swagger导出json

要将 Swagger(或者 OpenAPI)文档导出为 JSON 文件,通常有几种常见的方法,具体取决于你使用的 Swagger 工具(如 Swagger UI、Swagger Editor、Swagger Hub 等)。下面列出了几种常见的导出 JSON 文件的方法。 1. 通过 Swagger UI 导出 JSON 文件 如果你在使用 Swagger UI…...

Go语言的 的引用数据类型(Reference Data Types)核心知识

Go语言的引用数据类型&#xff08;Reference Data Types&#xff09;核心知识 引言 Go语言作为一种现代编程语言&#xff0c;因其简洁的语法、强大的并发支持以及丰富的标准库而受到广泛欢迎。在Go语言中&#xff0c;数据类型可以分为值类型和引用类型。本文将深入探讨Go语言…...

JAVA解析Excel复杂表头

废话不多说&#xff0c;直接上源码。前后端都有哦&#xff5e;&#xff5e;&#xff5e;&#xff5e;&#xff5e;&#xff5e;&#xff5e;&#xff5e; 能帮到你记得点赞收藏哦&#xff5e;&#xff5e;&#xff5e;&#xff5e;&#xff5e;&#xff5e;&#xff5e;&#…...

jmeter 中 BeanShell 预处理程序、JSR223后置处理程序使用示例

1. 各个组件如何新建的&#xff1f; 2. "http请求" 组件内容样例&#xff1a; "消息体数据" 源码&#xff1a; {"task_tag": "face_detect","image_type": "base64","extra_args": [{"model"…...

我的创作纪念日——《惊变128天》

我的创作纪念日——《惊变128天》 机缘收获日常成就憧憬 机缘 时光飞逝&#xff0c;转眼间&#xff0c;我已在这条创作之路上走过了 128 天。回顾起 2024 年 8 月 29 日&#xff0c;我满怀忐忑与期待&#xff0c;撰写了第一篇技术博客《讲解LeetCode第1题&#xff1a;两数之和…...

当孩子注意力不足时,如何有效帮助他们克服多动症?

多动症诊断标准与ADHD症状的全面解析 多动症&#xff0c;医学上称为注意力缺陷多动障碍&#xff08;ADHD&#xff09;&#xff0c;其诊断标准以行为表现为基础。主要的ADHD症状包括注意力不足、易分心、激动不安和冲动行为等。根据国际通用的《精神障碍诊断与统计手册》第五版&…...

3大实战场景:dnSpyEx .NET逆向调试与编辑的完整指南

3大实战场景&#xff1a;dnSpyEx .NET逆向调试与编辑的完整指南 【免费下载链接】dnSpy Unofficial revival of the well known .NET debugger and assembly editor, dnSpy 项目地址: https://gitcode.com/gh_mirrors/dns/dnSpy dnSpyEx是一款功能强大的.NET逆向工具&am…...

STM32与GD25Q128的SPI通信接口实现与优化

1. SPI通信基础与硬件连接 SPI&#xff08;Serial Peripheral Interface&#xff09;是一种高速、全双工的同步串行通信协议&#xff0c;在嵌入式系统中广泛应用。STM32与GD25Q128闪存芯片的通信就是典型的SPI应用场景。GD25Q128是兆易创新推出的128Mb&#xff08;16MB&#x…...

SenseVoice Small实战应用:视频内容打标,自动生成文字摘要和情感倾向

SenseVoice Small实战应用&#xff1a;视频内容打标&#xff0c;自动生成文字摘要和情感倾向 1. 引言&#xff1a;当视频内容遇上“读心术” 想象一下&#xff0c;你手头有几百小时的视频素材&#xff0c;可能是会议录像、课程录播、用户访谈&#xff0c;或是社交媒体上的海量…...

靠谱的法兰研发公司

在工业领域&#xff0c;法兰是连接管道系统的关键部件&#xff0c;其性能直接影响到整个系统的安全性和稳定性。因此&#xff0c;选择一家靠谱的法兰研发公司至关重要。本文将从多个维度对河北汇能管道制造有限公司&#xff08;以下简称“河北汇能”&#xff09;进行评测&#…...

**SSR渲染实战:从原理到高性能部署的完整流程与代码优化指南**在现

SSR渲染实战&#xff1a;从原理到高性能部署的完整流程与代码优化指南 在现代前端开发中&#xff0c;服务端渲染&#xff08;SSR&#xff09; 已成为提升首屏加载速度、SEO友好性和用户体验的核心技术之一。尤其在 Vue 3 Nuxt.js 或 React Next.js 等主流框架下&#xff0c;S…...

万物识别镜像效果展示:实测识别小麦条锈病,准确率超96%

万物识别镜像效果展示&#xff1a;实测识别小麦条锈病&#xff0c;准确率超96% 1. 从田间到屏幕&#xff1a;AI如何一眼看穿小麦病害 清晨的麦田里&#xff0c;农技员小李发现一片叶片上出现了奇怪的黄色斑点。传统做法需要采集样本送回实验室&#xff0c;等待3-5天才能出结果…...

CLIP ViT-H-14惊艳效果:建筑图纸与实景照片在特征空间的跨域对齐

CLIP ViT-H-14惊艳效果&#xff1a;建筑图纸与实景照片在特征空间的跨域对齐 1. 项目概述 今天我们要介绍的是基于CLIP ViT-H-14模型的图像特征提取服务。这个服务能够将各种类型的图像转换为1280维的特征向量&#xff0c;特别擅长处理建筑图纸与实景照片之间的跨域对齐问题。…...

Qwen2-VL-2B-Instruct跨平台调用方案:从移动端App到桌面应用的集成实践

Qwen2-VL-2B-Instruct跨平台调用方案&#xff1a;从移动端App到桌面应用的集成实践 1. 引言&#xff1a;当AI能力需要无处不在 最近在做一个项目&#xff0c;需要把视觉语言模型的能力塞进各种客户端里——手机App、桌面软件都得用上。一开始觉得挺简单&#xff0c;不就是调个…...

开箱即用!Qwen3-Reranker-0.6B Docker镜像部署与API调用指南

开箱即用&#xff01;Qwen3-Reranker-0.6B Docker镜像部署与API调用指南 1. 模型简介与核心价值 1.1 什么是Qwen3-Reranker-0.6B Qwen3-Reranker-0.6B是通义千问系列中的轻量级语义重排序模型&#xff0c;专为RAG&#xff08;检索增强生成&#xff09;场景设计。这个6亿参数…...