我已经在stackoverflow中检查了5个或更多关于var用法的帖子,但我仍然在寻找关于var用法的答案。我习惯使用Concrete类型而不是var,但我的Resharper抱怨改为var。 var是类型的选择 - 即使已知具体类型吗?
答案 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)
这
从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关键字并不意味着“变体”并且不表示变量是松散类型的,或者 后期绑定。它只是意味着编译器确定并分配了 最合适的类型。