【从零开始入门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、匿名类型的限制: 专栏推荐完结 一、v…...
Spring Boot 中 TypeExcludeFilter 的作用及使用示例
在Spring Boot应用程序中,TypeExcludeFilter 是一个用于过滤特定类型的组件,使之不被Spring容器自动扫描和注册为bean的工具。这在你想要排除某些类或类型(如配置类、组件等)而不希望它们参与Spring的自动装配时非常有用。 作用 …...
解锁kafka组件安全性解决方案:打造全方位安全防线
文章目录 前言安全漏洞修复权限管理身份验证数据传输数据存储 前言 Kafka组件的安全性解决方案旨在保护Kafka集群免受未经授权访问、数据泄露、知识产权问题和竞争法问题的侵害。提高开源中间件的安全性和稳定性,包括安全漏洞修复、权限管理、身份验证等方面的内容…...

【C++数据结构——图】最小生成树(头歌实践教学平台习题) 【合集】
目录😋 任务描述 相关知识 带权无向图 建立邻接矩阵 Prim算法 1. 算法基本概念 2. 算法背景与目标 3. 算法具体步骤 4. 算法结束条件与结果 测试说明 通关代码 测试结果 任务描述 本关任务:编写一个程序求图的最小生成树。 相关知识 为了完成…...
Java(1)入门基础
1. Java简介 1.1 什么是Java Java 是一款由Sun Microsystems公司(现为甲骨文公司Oracle Corporation的一部分)的James Gosling及其团队在1995年发布的高级编程语言。同时,Java 是一种面向对象的语言,这意味着它允许开发者通过创…...
2024.1.5总结
今日不开心:这周本来想花点时间学习的,没想到全都花在刷视频,外出消费去了。 今日思考: 1.找对象这件事确实不能强求,顺其自然吧,单身和不单身,其实,各有各的利弊。在一次坐地铁的过程中,我一…...

【C语言程序设计——循环程序设计】枚举法换硬币(头歌实践教学平台习题)【合集】
目录😋 任务描述 相关知识 一、循环控制 / 跳转语句的使用 1. 循环控制语句(for 循环) 2. 循环控制语句(while 循环) 3. 跳转语句(break 语句) 4. 跳转语句(continue 语句&…...
在调用 borrowObject 方法时,Apache Commons Pool 会根据连接池的配置触发一系列相关的方法
在调用 borrowObject 方法时,Apache Commons Pool 会根据连接池的配置触发一系列相关的方法 1. GrpcChannel 的概念 GrpcChannel 是 gRPC 客户端与服务器之间通信的核心组件。它是基于 HTTP/2 的连接,支持多路复用,即通过单个通道可以发送多…...
Linux中的tty和pts概念和区别
目录 1、什么是tty (1)tty的概念 (2)tty0 (3)tty1~6 2、什么是pts (1)pts的含义 (2)pts的具体解释 3、pts与 tty 设备的比较 4、设备文件的位置 1、什…...
【SOC 芯片设计 DFT 学习专栏 -- RTL 中的信号名和 Netlist 中的信号名差异】
Overview 本文将介绍 soc 设计中 RTL-to-Netlist 映射及 RTL 中的信号名和 Netlist 中的信号名差异, 在 SoC设计中,RTL-to-Netlist映射 是从RTL(Register Transfer Level)代码转换为Netlist的过程。这通常涉及将用硬件描述语言&…...

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

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

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

【Flink CDC】Flink CDC的Schema Evolution表结构演变的源码分析和流程图
Flink CDC版本:3.2.1 说明:本文从SchemaOperator接收到,表结构变更事件开始,表结构变更事件应由source端产生,本文不讨论。 可以先看流程图,研究源码。 参考文章: Flink cdc3.0动态变更表结构—…...

【智能算法】改进蚁狮优化算法【matlab】
目录 1 主要内容 2 部分程序 3 程序结果 下载链接 1 主要内容 该程序方法复现《改进蚁狮算法的无线传感器网络覆盖优化》两种改进算法模型,即原始ALO算法的基础上添加了两种改进策略: - 改进1:将原先的间断性边界收缩因子变为连续性边界…...
swagger导出json
要将 Swagger(或者 OpenAPI)文档导出为 JSON 文件,通常有几种常见的方法,具体取决于你使用的 Swagger 工具(如 Swagger UI、Swagger Editor、Swagger Hub 等)。下面列出了几种常见的导出 JSON 文件的方法。 1. 通过 Swagger UI 导出 JSON 文件 如果你在使用 Swagger UI…...
Go语言的 的引用数据类型(Reference Data Types)核心知识
Go语言的引用数据类型(Reference Data Types)核心知识 引言 Go语言作为一种现代编程语言,因其简洁的语法、强大的并发支持以及丰富的标准库而受到广泛欢迎。在Go语言中,数据类型可以分为值类型和引用类型。本文将深入探讨Go语言…...
JAVA解析Excel复杂表头
废话不多说,直接上源码。前后端都有哦~~~~~~~~ 能帮到你记得点赞收藏哦~~~~~~~&#…...

jmeter 中 BeanShell 预处理程序、JSR223后置处理程序使用示例
1. 各个组件如何新建的? 2. "http请求" 组件内容样例: "消息体数据" 源码: {"task_tag": "face_detect","image_type": "base64","extra_args": [{"model"…...

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

大故障,阿里云核心域名疑似被劫持
2025年6月5日凌晨,阿里云多个服务突发异常,罪魁祸首居然是它自家的“核心域名”——aliyuncs.com。包括对象存储 OSS、内容分发 CDN、镜像仓库 ACR、云解析 DNS 等服务在内,全部受到波及,用户业务连夜“塌房”。 更让人惊讶的是&…...
Playwright自动化测试全栈指南:从基础到企业级实践(2025终极版)
引言 在Web应用复杂度指数级增长的今天,传统自动化测试工具面临动态渲染适配难、多浏览器兼容差、测试稳定性低三大挑战。微软开源的Playwright凭借跨浏览器支持、自动等待机制和原生异步架构,成为新一代自动化测试的事实标…...

图上合成:用于大型语言模型持续预训练的知识合成数据生成
摘要 大型语言模型(LLM)已经取得了显著的成功,但仍然是数据效率低下,特别是当学习小型,专业语料库与有限的专有数据。现有的用于连续预训练的合成数据生成方法集中于文档内内容,而忽略了跨文档的知识关联&a…...
OpenCV 滑动条调整图像对比度和亮度
一、知识点 1、int createTrackbar(const String & trackbarname, const String & winname, int * value, int count, TrackbarCallback onChange 0, void * userdata 0); (1)、创建一个滑动条并将其附在指定窗口上。 (2)、参数说明: trackbarname: 创建的…...

数据湖是什么?数据湖和数据仓库的区别是什么?
目录 一、数据湖是什么 (一)数据湖的定义 (二)数据湖的特点 二、数据仓库是什么 (一)数据仓库的定义 (二)数据仓库的特点 三、数据湖和数据仓库的区别 (一&#…...

数据通信与计算机网络——数据与信号
主要内容 模拟与数字 周期模拟信号 数字信号 传输减损 数据速率限制 性能 注:数据必须被转换成电磁信号才能进行传输。 一、模拟与数字 数据以及表示数据的信号可以使用模拟或者数字的形式。数据可以是模拟的也可以是数字的,模拟数据是连续的采用…...

如何轻松、安全地管理密码(新手指南)
很多人会为所有账户使用相同、易记的密码,而且常常多年不换。虽然这样方便记忆,但安全性非常低。 您可能听说过一些大型网站的信息泄露事件,同样的风险也可能存在于您的WordPress网站中。如果有不法分子获取了访问权限,您的网站和…...

计算机网络领域所有CCF-A/B/C类期刊汇总!
本期小编统计了【计算机网络】领域CCF推荐所有期刊的最新影响因子,分区、年发文量以及投稿经验,供大家参考! CCF-A类 1 IEEE Journal on Selected Areas in Communications 【影响因子】13.8 【期刊分区】JCR1区,中科院1区TOP …...
测试设计技术全解析:黑盒与白盒测试的七种武器与覆盖率指标
在软件开发的生命周期中,测试设计技术扮演着至关重要的角色,它直接影响着产品质量和用户体验。测试设计技术主要分为黑盒测试技术和白盒测试技术两大类,它们各有优势和适用场景。黑盒测试技术侧重于从用户视角验证软件功能是否符合需求&#…...

MySQL性能调优:Mysql8高频面试题汇总
1,主键和唯一键有什么区别? 主键不能重复,不能为空,唯一键不能重复,可以为空。 建立主键的目的是让外键来引用。 一个表最多只有一个主键,但可以有很多唯一键 2,MySQL常用的存储引擎有哪些&…...