C# 这种类型推断的优点是什么?

C# 这种类型推断的优点是什么?,c#,C#,使用类型推断,我们可以编写: var myList = new List<int>(); var myList=new List(); 但这不是真的有帮助,是吗?因为仍然需要我们只添加int,所以只声明变量“int”而不是“var”不是更容易吗?var不会改变编译器的输出-它只会使代码更短 var提供任何其他内容的唯一时间是关于匿名类型: var foo = new { Bar = 123 }; 重要的是要理解,var并不意味着动态或可变(因为它允许对象的类型发生变化)-它只允

使用类型推断,我们可以编写:

var myList = new List<int>();
var myList=new List();

但这不是真的有帮助,是吗?因为仍然需要我们只添加int,所以只声明变量“int”而不是“var”不是更容易吗?

var不会改变编译器的输出-它只会使代码更短

var
提供任何其他内容的唯一时间是关于匿名类型:

var foo = new { Bar = 123 };

重要的是要理解,
var
并不意味着动态或可变(因为它允许对象的类型发生变化)-它只允许您声明一个变量,并让编译器像声明它一样推断类型。

var不会更改编译器的输出-它只会缩短代码

var
提供任何其他内容的唯一时间是关于匿名类型:

var foo = new { Bar = 123 };

重要的是要理解
var
并不意味着动态或变量(从某种意义上说,它允许对象的类型发生变化)-它只允许您声明一个变量,并让编译器像声明它一样推断类型。

在您的示例中,没有优势。事实上,我相信代码可读性会受到一些影响(观点)


这个问题的答案归结为个人偏好。如果使用
var
,编译器将推断
List()
。你喜欢看哪一个?你的同龄人更喜欢看哪一个?

在你的例子中,没有优势。事实上,我相信代码可读性会受到一些影响(观点)

IEnumerable<MadeUpEmbarrassinglyLongClassName> stupidVariable = new IEnumerable<MadeUpEmbarrassinglyLongClassName>();
这个问题的答案归结为个人偏好。如果使用
var
,编译器将推断
List()
。你喜欢看哪一个?您的同事更喜欢看哪一个?

IEnumerable stupidVariable=new IEnumerable();
IEnumerable<MadeUpEmbarrassinglyLongClassName> stupidVariable = new IEnumerable<MadeUpEmbarrassinglyLongClassName>();
vs

var stupidVariable=new IEnumerable();
哪个更容易阅读?

IEnumerable stupidVariable=new IEnumerable();
vs

var stupidVariable=new IEnumerable();
哪个更容易阅读?

它比:

List<int> myList = new List<int>();
List myList=new List();
我想这可能比使用var更容易理解,尽管在这个小例子中没有太多内容

此外,如果变量名称合理,那么它的类型应该相当清楚。

它比:

List<int> myList = new List<int>();
List myList=new List();
我想这可能比使用var更容易理解,尽管在这个小例子中没有太多内容



此外,如果变量的命名是合理的,那么它的类型应该是相当清楚的。

var的类型是未知的,直到它被赋值为止。一旦您分配了一个值,它就成为分配给它的类型。这个
var
用于在编译时无法推断将传递给它的值的情况。
var
方便的另一种情况是在LINQ查询中。您只需将结果分配给
var
,其余的工作就完成了,而不是创建一个特殊的类来处理查询返回。一旦开始使用LINQ,您肯定会称赞
var
var
是未知类型,直到它被赋值为止。一旦您分配了一个值,它就成为分配给它的类型。这个
var
用于在编译时无法推断将传递给它的值的情况。
var
方便的另一种情况是在LINQ查询中。您只需将结果分配给
var
,其余的工作就完成了,而不是创建一个特殊的类来处理查询返回。一旦开始使用LINQ,您肯定会称赞
var
。。。并允许匿名类型。。。。并且允许匿名类型。您必须将变量声明为
List
,而不是
int
@nos:键入不是重要的部分-读取是。您必须将变量声明为
List
,而不是
int
@nos:键入不是重要的部分-读取是。可读性如何受到影响?!?类型就在变量声明的行上。两次输入List如何使代码更具可读性?@AndrewAnderson,混合使用时可读性受到影响。例如,
var myQuery=from…select List
。在本例中,我们需要编译器来推断类型。有一些实例(如OP中)是不需要的。我更希望在查看代码时不必在思想上进行区分。同样,正如我所说,这是个人偏好。不是每个人的大脑都是一样的:)我过去的思维方式和你一样,避免了像瘟疫一样的“var”。。。。然后我看到它是如何通过删除cruft来提高可读性的,现在任何双重声明变量类型的代码在我看来都很糟糕。@AndrewAnderson,同样,这个问题的答案完全基于偏好。我在上一条消息中没有不同意你的观点。。)可读性如何受损?!?类型就在变量声明的行上。两次输入List如何使代码更具可读性?@AndrewAnderson,混合使用时可读性受到影响。例如,
var myQuery=from…select List
。在本例中,我们需要编译器来推断类型。有一些实例(如OP中)是不需要的。我更希望在查看代码时不必在思想上进行区分。同样,正如我所说,这是个人偏好。不是每个人的大脑都是一样的:)我过去的思维方式和你一样,避免了像瘟疫一样的“var”。。。。然后我看到它是如何通过删除cruft来提高可读性的,现在任何双重声明变量类型的代码在我看来都很糟糕。@AndrewAnderson,同样,这个问题的答案是total