我没有确切地看到类型推断的目的是什么,将其添加到语言中有什么好处,是否有任何特殊用途,如C ++ 11 auto关键字?
我认为它就像一个添加,因为我不知道真正的情况,结果类型不一定事先知道
(我的意思是使用关键字var)
谢谢
答案 0 :(得分:2)
在处理复杂签名时,类型推断可以节省难以置信的数量。例如,
var itemCreator = _interface.GetItemCreator();
比
更紧凑,更易读Func<int, string, double, decimal,
Dictionary<int, KeyValuePair<int, string>>,
Action<string, string, string>> itemCreator = _interface.GetItemCreator();
这显然是一个非常人为的例子,旨在证明一点......代码变得混乱,与之相关的类型声明也常常是混乱的。类型推断在这方面为我们带来了一些痛苦。
此外,Type Inference使我们能够使用在LINQ和序列化库中大量使用的匿名方法。
匿名方法在编译时生成一个类型。因此,您无法提前适当地声明类型。
就您与C ++ 11中的自动运算符进行比较而言,乍一看它似乎具有相同/相似的功能。
答案 1 :(得分:1)
public class Class1
{
public string Method1()
{
return "string";
}
}
// Calling code
Class1 cls1 = new Class1();
var result = cls1.Method1(); // result is string type.
现在一段时间后,您决定需要从Method1返回 int 。您可以这样做,而无需担心调用代码。
除此之外, var 在LINQ中也被大量使用。
另一个用途是使代码更清晰,例如:
Dictionary<int, string> dictionary = new Dictionary<int, string>();
VS
var dictionary = new Dictionary<int, string>();
你可以看到哪一个更干净。
答案 2 :(得分:1)
类型推断至少有助于C#开发的三个方面:
编写代码
var
需要更少的击键次数,并且更少时间担心从方法返回的确切类型等。
了解代码
与明确指定类型相比, var
生成更简洁,可读的代码。
维护代码
当应用程序中的类型发生变化(并且会发生变化)时,需要更少的代码更改。
var
有许多好处和一些缺点。我在任何地方都使用它,除非我有令人信服的理由不这样做。