gpt4 book ai didi

c# - var 如何知道未定义的类型?

转载 作者:太空狗 更新时间:2023-10-29 20:59:13 25 4
gpt4 key购买 nike

隐式类型变量 var 如何知道一个未在范围内定义的类型(使用 using)?

示例:

没关系

public class MyClass
{
public void MyMethod
{
var list = AStaticClass.GetList();
}
}

但是这样不行

public class MyClass
{
public void MyMethod
{
List<string> list = AStaticClass.GetList();
}
}

在最后一个代码片段中,我必须添加 using System.Collections.Generic; 才能正常工作。

这是如何运作的?

最佳答案

How does this work?

当编译器进行类型推断时,它会替换 varSystem.Collections.Generic.List<string>你的代码变成:

public class MyClass
{
public void MyMethod
{
System.Collections.Generic.List<string> list = AStaticClass.GetList();
}
}

但是由于编译器吐出 IL,下面的 C# 程序(没有任何 using 语句):

public class Program
{
static void Main()
{
var result = GetList();
}

static System.Collections.Generic.List<string> GetList()
{
return new System.Collections.Generic.List<string>();
}
}

Main方法如下所示:

.method private hidebysig static void Main() cil managed
{
.entrypoint
.maxstack 8
L_0000: call class [mscorlib]System.Collections.Generic.List`1<string> Program::GetList()
L_0005: pop
L_0006: ret
}

如您所见,编译器从赋值运算符的右侧推断出类型并替换了 var使用完全限定的类型名称。

关于c# - var 如何知道未定义的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11968498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com