相关疑难解决方法(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万
查看次数

C#'var'关键字与明确定义的变量

我目前正在使用ReSharper的30天试用版,到目前为止,我对它的建议印象深刻.然而,一个建议让我感到困惑.

当我明确定义变量时,例如:

List<String> lstString = new List<String>();
Run Code Online (Sandbox Code Playgroud)

ReSharped添加了一条波浪形的绿线并告诉我:

使用隐式类型本地变量声明.

如果我按照其建议,ReSharper将代码行更改为:

var lstString = new List<String>();
Run Code Online (Sandbox Code Playgroud)

那么,从改变List<String>到a 是否会有某种性能提升var,或者这仅仅是ReSharper的一个特点?我一直被教导明确定义变量而不是使用动态更为优化.

c# resharper performance

30
推荐指数
3
解决办法
9655
查看次数

在C#3.0> +中隐式输入有什么好处

我能看到的唯一优势:

var s = new ClassA();
Run Code Online (Sandbox Code Playgroud)

过度

ClassA s = new ClassA();
Run Code Online (Sandbox Code Playgroud)

如果你决定要ClassB,那么你只需要更改声明的RHS即可.

我想如果你通过集合枚举,你也可以只是'var',然后再计算出类型.

是吗?还有一些其他巨大的好处,我的虚弱的头脑没有看到?

.net c# implicit-typing

6
推荐指数
2
解决办法
3007
查看次数