Est*_*aya 12 .net c# generics programming-languages
请看以下代码段:
List<int> distances = new List<int>();
Run Code Online (Sandbox Code Playgroud)
语言设计者是否打算实现冗余?如果是这样,为什么?
Jef*_*dge 74
代码看起来多余的原因是,对于新手程序员来说,它似乎是两次定义相同的东西.但这不是代码正在做的事情.它定义了两个恰好属于同一类型的独立事物.它定义了以下内容:
List<int>.List<int>.考虑以下:
Person[] coworkers = new Employee[20];
Run Code Online (Sandbox Code Playgroud)
这里非冗余更清晰,因为变量和分配的对象有两种不同的类型(如果对象的类型派生自或实现变量的类型,那么这种情况是合法的).
Fly*_*wat 15
什么减少了这个?
List<int> listOfInts = new List<int>():
Run Code Online (Sandbox Code Playgroud)
翻译成英文:(编辑,清理一点澄清)
当你想到它的作用时,并不是真的很冗长.
当然还有另一种选择:
var listOfInts = new List<int>();
Run Code Online (Sandbox Code Playgroud)
这里我们使用C#的类型推断,因为你立即分配它,C#可以确定你想要在堆中创建的对象创建什么类型.
要完全理解CLR如何处理类型,我建议阅读CLR Via C#.
Nes*_*cio 10
你总是可以说:
var distances = new List<int>();
Run Code Online (Sandbox Code Playgroud)
正如其他人所说:var消除冗余,但它有潜在的负面维护后果.我会说它也有潜在的积极意义维护后果.
幸运的是,Eric Lippert比我更有说服力地写了这篇文章:http ://csharpindepth.com/ViewNote.aspx?注意ID = 63 http://csharpindepth.com/ViewNote.aspx?NoteID=61
| 归档时间: |
|
| 查看次数: |
3320 次 |
| 最近记录: |