隐式类型变量是前进的方式(C#)

时间:2009-12-11 14:12:54

标签: c# var implicit-typing

我在最初为.net v2编写的项目中使用StyleCop for Resharper。但是我已经为3.5框架升级了这个项目。

Stylecop建议我将显式类型变量的大部分更改为隐式输入,例如:

string - var

自定义强类型 - var

这是使用.net 3.5项目时的前进方向。似乎不寻常地将所有内容声明为var。

如果我的术语已经出来,请随时更新问题标题...

5 个答案:

答案 0 :(得分:3)

在很多地方都有争议,而且还有很多尝试。比较这两行代码:

StringBuilder stringBuilder = new StringBuilder();
var stringBuilder = new StringBuilder();

您更喜欢哪个?

答案 1 :(得分:3)

那些不是泛型,那些是隐式类型变量。这主要是品味问题。有些地方你可以过度使用var,并且有些地方非常需要(想想匿名类型),所以只需在中间找到适合你(和你的团队)偏好的地方。

答案 2 :(得分:3)

看看这个

var (C# Reference)

Implicitly Typed Local Variables (C# Programming Guide)

  

隐式类型的局部变量是   强烈打字,就像你有   自己宣布了类型,但是   编译器确定类型。

另请查看Use of var keyword in C#

C# Debate: When Should You Use var?

答案 3 :(得分:0)

我认为它更像是一个建议,应该加以考虑,但不一定完全实施。

虽然个人认为var的最佳用途是声明/返回类型很明显,即:

var temp = "Test me now";

var temp = GetTestData();

此外,我真的很高兴能够用更少的代码声明泛型类型:

    var test = new Dictionary<string,string>();

    Dictionary<string, string> test = new Dictionary<string,string>();

答案 4 :(得分:0)

当使用例如时,

var非常重要匿名类型......

var cees = from c in Customers select new { c.Name, c.Birthdate };

Resharper建议将所有内容更改为var。对于明显的定义,如

var c = new Customer();

我喜欢用它。 对于某些API调用,我可以明确写下该类型:

Customer c = repository.Get(1);