2015-10-09 34 views
2

我不明白类型推断的目的是什么,将其添加到语言中有什么好处,是否有任何特殊用途,如在C + + 11自动关键词?在c#中的类型推断的目的是什么

我看到它就像一个插件,因为我真的不知道情况下所产生的类型事先不知道不一定

(我指的是使用关键字变种)

谢谢

+0

看看[这里](http://programmers.stackexchange.com/questions/257450/why-is-type-in​​ference-useful) –

+0

它使匿名类型成为可能。它可以节省大量的输入。 – Blorgbeard

+0

我期待着,谢谢 – HDJEMAI

回答

2

类型推断可以节省难以置信的处理复杂签名时的打字量。例如,

var itemCreator = _interface.GetItemCreator(); 

是如此比

Func<int, string, double, decimal, 
    Dictionary<int, KeyValuePair<int, string>>, 
    Action<string, string, string>> itemCreator = _interface.GetItemCreator(); 

更加紧凑和可读性这显然是一个令人难以置信的人为的例子旨在证明这一点......这些代码就会变得混乱和类型声明说去它也经常是凌乱的。类型推断节省了我们在这方面的一些痛苦。

此外,类型推断使我们能够使用在LINQ和序列化库中大量使用的匿名方法。

匿名方法在编译时生成一个类型。因此,您无法提前适当地声明该类型。至于你与C++ 11中的自动操作符的比较,乍一看它似乎具有相同/相似的功能。

1
public class Class1 
{ 
    public string Method1() 
    { 
     return "string"; 
    } 
} 

// Calling code 
Class1 cls1 = new Class1(); 
var result = cls1.Method1(); // result is string type. 

了一段时间后,你决定你需要从你的方法一回INT。你可以这样做,而不必担心调用代码。

除了这个var也在LINQ中大量使用。

另一个用途是使你的代码更加清晰,例如:

Dictionary<int, string> dictionary = new Dictionary<int, string>(); 

var dictionary = new Dictionary<int, string>(); 

你可以看看哪一个更干净阅读。

1

类型推断有助于C#开发的至少有三个方面:

  1. 编写代码

    var需要较少的按键,和更少的时间担心确切类型的方法等返回

  2. 理解代码

    var产生比明确指定类型的更简洁,可读代码。需要在更少的地方

  3. 维护代码

    更少的代码更改时,在您的应用程序改变的类型(他们会)。

var有很多好处和很少的缺点。我在任何地方都使用它,除非我有令人信服的理由不要。