相关疑难解决方法(0)

在C#中使用var关键字

在与同事讨论了在C#3中使用'var'关键字后,我想知道人们对通过var的类型推断的适当用途有什么看法?

例如,我在可疑情况下懒得使用var,例如: -

foreach(var item in someList) { // ... } // Type of 'item' not clear.
var something = someObject.SomeProperty; // Type of 'something' not clear.
var something = someMethod(); // Type of 'something' not clear.
Run Code Online (Sandbox Code Playgroud)

var的更合理用途如下: -

var l = new List<string>(); // Obvious what l will be.
var s = new SomeClass(); // Obvious what s will be.
Run Code Online (Sandbox Code Playgroud)

有趣的是LINQ似乎有点灰色,例如: -

var results = from r in dataContext.SomeTable
              select r; // Not *entirely clear* what results will be …
Run Code Online (Sandbox Code Playgroud)

c# var type-inference

406
推荐指数
32
解决办法
13万
查看次数

var关键字有什么意义?

变种关键字摒弃了需要一个明确的类型声明,我有兴趣地阅读SO讨论时,它可能是适当的.

我还读过(但未使用过)Boo,它似乎通过使声明局部变量可选而更进一步.使用Boo,可以隐含类型和声明.

这让我想知道,为什么C#语言设计师根本不想包含一个var关键字?

更新:是的,var支持匿名类型,但匿名类型本身不需要var关键字...

var anon = new { Name = "Terry", Age = 34 };
Run Code Online (Sandbox Code Playgroud)

anon = new { Name = "Terry", Age = 34 };
Run Code Online (Sandbox Code Playgroud)

c# variables boo

47
推荐指数
5
解决办法
2万
查看次数

为什么在c#中使用动态类型?

起初我想的是:

var aName=getAllSomethings();
Run Code Online (Sandbox Code Playgroud)

是非常不可读的,所以我会在没有混淆的空间时使用动态类型,例如:

AClassName aName = new AClassName();
Run Code Online (Sandbox Code Playgroud)

这里,

var aName=new AClassName();
Run Code Online (Sandbox Code Playgroud)

似乎可读.但是,我(这里)读到动态类型也会带来性能代价.
我尝试阅读该链接中的所有其他帖子,以了解我应该在哪里使用动态类型,但是甚至没有提出一个很好的理由.我应该等待,直到我告诉自己 - "这只能用动态打字来解决"?或者是否有更好(实际)的理由使用它?

谢谢.

编辑:我的错误( - :将尽快关闭此问题.

.net c# .net-4.0 c#-4.0

8
推荐指数
3
解决办法
3148
查看次数

标签 统计

c# ×3

.net ×1

.net-4.0 ×1

boo ×1

c#-4.0 ×1

type-inference ×1

var ×1

variables ×1