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