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# 开发的三个方面:

  1. 写代码

    var 需要更少的击键,并且更少的时间担心从方法返回的确切类型等。

  2. 理解代码

    var 生成比显式指定类型更简洁、可读性更强的代码。

  3. 维护代码

    当您的应用程序中的类型发生变化(而且它们会发生变化)时,需要在更少的地方更改更少的代码。

var 优点多,缺点少。我到处都使用它,除非我有令人信服的理由不这样做。