gpt4 book ai didi

c# - .NET 中的这种类型是什么(反射)

转载 作者:IT王子 更新时间:2023-10-29 04:04:30 24 4
gpt4 key购买 nike

.NET 中的这种类型是什么?我正在使用反射来获取所有类的列表,这个出现了。

这是什么?它从何而来? DisplayClass1 这个名称是如何选择的?我搜索了资源,但没有看到任何东西。 <> 是什么意思意思是? c__ 是什么意思是?有引用吗?

enter image description here

最佳答案

它几乎可以肯定是编译器由于 lambda 表达式或匿名方法而生成的类。例如,考虑这段代码:

using System;

class Test
{
static void Main()
{
int x = 10;
Func<int, int> foo = y => y + x;
Console.WriteLine(foo(x));
}
}

编译成:

using System;

class Test
{
static void Main()
{
ExtraClass extra = new ExtraClass();
extra.x = 10;

Func<int, int> foo = extra.DelegateMethod;
Console.WriteLine(foo(x));
}

private class ExtraClass
{
public int x;

public int DelegateMethod(int y)
{
return y + x;
}
}
}

... 除了使用 <>c_displayClass1作为名称而不是 ExtraClass .这是一个无法形容的名称,因为它不是有效的 C# - 这意味着 C# 编译器肯定知道它不会出现在您自己的代码中并与其选择发生冲突。

编译匿名函数的确切方式是特定于实现的,当然 - 额外类的名称选择也是如此。

编译器还会为迭代器 block 和(在 C# 5 中)异步方法和委托(delegate)生成额外的类。

关于c# - .NET 中的这种类型是什么(反射),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6402491/

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