[英]What is the purpose of Type Inference in c#
我没有确切看到类型推断的目的是什么,将其添加到语言中有什么好处,是否有像C ++ 11 auto关键字那样的特殊用途?
我看到它就像添加一样,因为我不真正知道不一定事先知道结果类型的情况
(我的意思是使用关键字var)
谢谢
类型推断节省了复杂的签名交易时输入的数量惊人 。 例如,
var itemCreator = _interface.GetItemCreator();
比它更紧凑,更易读
Func<int, string, double, decimal,
Dictionary<int, KeyValuePair<int, string>>,
Action<string, string, string>> itemCreator = _interface.GetItemCreator();
这显然是一个难以置信的人为设计的例子,旨在证明这一点……代码变得混乱,并且随之而来的类型声明也常常混乱。 类型推断为我们节省了这方面的痛苦。
另外,类型推断使我们能够使用在LINQ和序列化库中大量使用的匿名方法。
匿名方法在编译时生成一个类型。 因此,您无法提前声明适当的类型。
就您与C ++ 11中的auto运算符的比较而言,乍一看它似乎具有相同/相似的功能。
public class Class1
{
public string Method1()
{
return "string";
}
}
// Calling code
Class1 cls1 = new Class1();
var result = cls1.Method1(); // result is string type.
现在过了一段时间,您决定需要从Method1返回int 。 您可以这样做,而不必担心调用代码。
除了这个变种还大量在LINQ使用。
另一个用途是使代码更整洁,例如:
Dictionary<int, string> dictionary = new Dictionary<int, string>();
与
var dictionary = new Dictionary<int, string>();
您可以看到哪个更容易阅读。
类型推断至少有助于C#开发的三个方面:
编写代码
var
所需的击键次数更少,而为方法等返回的确切类型担心的时间也更少。
了解代码
与显式指定类型相比, var
产生的代码更简洁易读。
维护代码
当应用程序中的类型更改时(并且会更改),需要在较少的地方进行较少的代码更改。
var
有很多优点,而缺点很少。 除非有充分的理由,否则我会在任何地方使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.