var与具体类型的使用

时间:2013-12-05 05:07:14

标签: c# var

我已经在stackoverflow中检查了5个或更多关于var用法的帖子,但我仍然在寻找关于var用法的答案。我习惯使用Concrete类型而不是var,但我的Resharper抱怨改为var。 var是类型的选择 - 即使已知具体类型吗?

3 个答案:

答案 0 :(得分:25)

以下是msdn ...

的摘录

如果变量的特定类型在键盘上输入很繁琐,或者很明显,或者没有增加代码的可读性,那么var关键字也很有用。 var以这种方式有用的一个例子是嵌套泛型类型,例如与组操作一起使用的类型。在以下查询中,查询变量的类型是IEnumerable>。只要您和其他必须维护您的代码的人理解这一点,使用隐式类型就没有问题。

但是,使用var确实至少有可能使您的代码更难以理解为其他开发人员。因此,C#文档通常仅在需要时才使用var。

参考:http://msdn.microsoft.com/en-us/library/bb384061.aspx

祝你好运!

答案 1 :(得分:15)

当类型显而易见时,我更喜欢使用var来提高可读性:

var myVariable = new List<string>();
var myVariable2 = (int) someOtherVariable;

如果类型不明显,我明确指定它。例如,方法的返回值:

int myVariable3 = GetSomeValue();

答案 2 :(得分:8)

var (C# Reference)

从Visual C#3.0开始,在方法范围声明的变量可以具有隐式类型var。隐式类型的局部变量是强类型的,就像您自己声明了类型一样,但编译器确定了类型。 i的以下两个声明在功能上是等效的:

var i = 10; // implicitly typed
int i = 10; //explicitly typed

我认为这里的重要部分是

  

隐式类型的局部变量是强类型的,就像你一样   我自己声明了类型,但编译器确定了类型。

此外,来自Implicitly Typed Local Variables (C# Programming Guide)

  

可以给局部变量一个var的推断“类型”而不是一个   显式类型。 var关键字指示编译器推断出   来自右侧表达式的变量类型   初始化语句。推断类型可以是内置类型,a   匿名类型,用户定义的类型或.NET中定义的类型   框架类库。   重要的是要理解var关键字并不意味着“变体”并且不表示变量是松散类型的,或者   后期绑定。它只是意味着编译器确定并分配了   最合适的类型。