gpt4 book ai didi

c# - 符号 <> 在 MSIL 中是什么意思?

转载 作者:可可西里 更新时间:2023-11-01 08:43:00 25 4
gpt4 key购买 nike

反编译后得到这段代码

    SampleClass sampleClass;
SampleClass <>g__initLocal0;
int y;
sampleClass = null;
Label_0018:
try
{
<>g__initLocal0 = new SampleClass();
<>g__initLocal0.X = 5;
<>g__initLocal0.Y = 10;
sampleClass = <>g__initLocal0;
goto Label_003A;
}
catch (Exception)
{
Label_0035:
goto Label_003A;
}
Label_003A:
y = sampleClass.Y;

我不知道某些操作之前的运算符/符号 <> 是什么意思。有人知道吗?

最佳答案

这是编译器生成的名称 - <>字符对于 IL 中的标识符是合法的,但在 C# 中不是。因此,编译器知道它可以生成包含此类字符的名称,而该名称不会与您在代码中使用的名称发生冲突。

在这种特殊情况下,<>g__initLocal0是一个新变量,已被引入以保存类的新构造实例,该类正在使用 initializer syntax 进行初始化。 .原代码为:

sampleClass = new SampleClass() { X = 5, Y = 10};

它的引入是为了避免sampleClass使用部分构造的实例进行观察 - 在 new SampleClass() 之后已执行但在分配给 X 之前和 Y发生。 IE。如果Y = 10抛出异常,它确保 sampleClass遗迹 null而不是新的 SampleClassX设置为 5 和一些未知值 Y .

关于c# - 符号 <> 在 MSIL 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15895644/

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