扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
写过JavaScript的朋友或许早就一眼盯住了上文中提到的新关键字“var”,是啊,多么熟悉的字眼儿,如今竟然也在C#当中出现了!如何使用呢?让我们来看一段很简短的代码吧:
1: static void Main(string[] args)
2: {
3: var name = "ZeroCool";
4: var age = 24;
5:
6: Console.WriteLine(name + " is " + age + " years old.");
7: }
如果您是在C# 3.0中编写这段代码,那么就可以运行。也许您会问,用var有什么好处呢,是否object也可以代替它呢?是的,可以代替,object是基类型,当然可以用它来声明任何类型的变量。但是,如果用object来声明值类型就会引起装箱操作,这会降低性能。另外,如果您要用几个object声明的变量进行运算的话,您必须得把它们挨个转换成相应的类型才行,这样做其实是费力不讨好的。关键字var的优点就在于它使得您可以非常便利地声明隐式类型变量,编译器可以在用到该变量的时候根据它的值来反推出它的类型。注意,var并不是具体的变量类型,它只是一个声明符,它的作用就是将数据类型的声明交给编译器去做。您可以用它来声明任何类型的变量,正如上一段程序中的变量age,您肯定知道它是一个int型变量,但实际上您写下这句代码的时候它还不是,只有在编译的时候编译器根据它的值反推出它是int型时,它才是真正意义上的int型。
前面看到的是用var关键字声明一些简单类型的变量,那么复杂类型的变量例如数组、集合等,是否也可以使用var关键字呢?答案是肯定的,请看:
1: static void Main(string[] args)
2: {
3: var memberNames = new[] { "ZeroCool", "Michael", "Somebody" };
4:
5: foreach (var item in memberNames)
6: {
7: Console.WriteLine(item.ToString());
8: }
9:
10: Console.ReadLine();
11: }
上面这段代码是可以正常运行的,同样的,.NET为我们提供的其它类型我们都可以用var来声明,同时也包括用户自定义类型。
另外,更强大的一点是,隐式类型数组中的元素可以通过匿名对象初始器来创建匿名类型的数据结构,例如:
1: static void Main(string[] args)
2: {
3: var memberInfo = new[] {
4: {
5: Name = "ZeroCool",
6: Details = new[] { "ZeroCool@Autumoon.com", "China" }
7: },
8: {
9: Name = "Michael",
10: Details = new[] { "Michael@Mail.com", "China", "Programmer" }
11: }
12: };
13: }
但是在使用var关键字声明变量的时候有几点注意事项:
查看本文来源
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者