c__DisplayClass1"-6ren">
gpt4 book ai didi

c# - <> C# 中类型名称中的符号

转载 作者:行者123 更新时间:2023-11-30 20:44:56 26 4
gpt4 key购买 nike

请帮助我理解这是什么:<>

我正在做一些反射(reflection),在程序集中寻找类型,我得到了一堆类型,它们都具有相同的名称,但方法不同:

{Name = "<>c__DisplayClass1" 
FullName = "HelixToolkit.Wpf.ElementSortingHelper+<>c__DisplayClass1"}

最佳答案

这是编译器在将 lambda 表达式转换为类时使用的命名约定。

这是一个例子。从这个类开始:

public class UserQuery
{
private void Main()
{
var x = 42;
Func<int> f = () => x;
var y = f();
}
}

编译器将其转换为:

public class UserQuery
{
public UserQuery()
{
base..ctor();
}

private void Main()
{
UserQuery.<>\u003C\u003Ec__DisplayClass1 cDisplayClass1 = new UserQuery.<>\u003C\u003Ec__DisplayClass1();
cDisplayClass1.x = 42;
int num = new Func<int>((object) cDisplayClass1, __methodptr(<\u003CMain>\u003Eb__0))();
}

[CompilerGenerated]
private sealed class <>\u003C\u003Ec__DisplayClass1
{
public int x;

public <>\u003C\u003Ec__DisplayClass1()
{
base..ctor();
}

public int <\u003CMain>\u003Eb__0()
{
return this.x;
}
}
}

不是合法的 c#,而是合法的 IL。

关于c# - <> C# 中类型名称中的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28756270/

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