c#中类型推断的目的是什么
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 中的自动运算符的比较而言,乍一看它似乎具有 same/similar 功能。
public class Class1
{
public string Method1()
{
return "string";
}
}
// Calling code
Class1 cls1 = new Class1();
var result = cls1.Method1(); // result is string type.
一段时间后,您决定需要从 Method1 中 return int。您可以这样做而不必担心调用代码。
除此之外 var 也在 LINQ 中大量使用。
另一个用途是使您的代码更简洁,例如:
Dictionary<int, string> dictionary = new Dictionary<int, string>();
对比
var dictionary = new Dictionary<int, string>();
你可以看看哪个读起来更干净。
类型推断至少有助于 C# 开发的三个方面:
写代码
var
需要更少的击键,并且更少的时间担心从方法返回的确切类型等。
理解代码
var
生成比显式指定类型更简洁、可读性更强的代码。
维护代码
当您的应用程序中的类型发生变化(而且它们会发生变化)时,需要在更少的地方更改更少的代码。
var
优点多,缺点少。我到处都使用它,除非我有令人信服的理由不这样做。
我不明白类型推断的确切目的是什么,将其添加到语言中有什么好处,是否有像 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 中的自动运算符的比较而言,乍一看它似乎具有 same/similar 功能。
public class Class1
{
public string Method1()
{
return "string";
}
}
// Calling code
Class1 cls1 = new Class1();
var result = cls1.Method1(); // result is string type.
一段时间后,您决定需要从 Method1 中 return int。您可以这样做而不必担心调用代码。
除此之外 var 也在 LINQ 中大量使用。
另一个用途是使您的代码更简洁,例如:
Dictionary<int, string> dictionary = new Dictionary<int, string>();
对比
var dictionary = new Dictionary<int, string>();
你可以看看哪个读起来更干净。
类型推断至少有助于 C# 开发的三个方面:
写代码
var
需要更少的击键,并且更少的时间担心从方法返回的确切类型等。理解代码
var
生成比显式指定类型更简洁、可读性更强的代码。维护代码
当您的应用程序中的类型发生变化(而且它们会发生变化)时,需要在更少的地方更改更少的代码。
var
优点多,缺点少。我到处都使用它,除非我有令人信服的理由不这样做。