反编译后我有这段代码 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;在执行某些操作之前,我不知道什么是运算符/符号。有人知道吗 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 这是编译器生成的名称-<>字符对于IL中的标识符合法,但在C#中不合法。因此,编译器知道它可以生成包含此类字符的名称,而不会导致该名称与您在代码中使用的名称冲突。在这种特殊情况下,<>g__initLocal0是一个新变量,已被引入以保存使用initializer syntax初始化的类的新构造实例。原始代码为:sampleClass = new SampleClass() { X = 5, Y = 10};引入它是为了避免在部分构造的实例中观察到sampleClass-在执行new SampleClass()之后但在对X和Y进行分配之前。 IE。如果Y = 10引发异常,则它可以确保sampleClass仍然是null,而不是SampleClass设置为5且X值未知的新Y。 (adsbygoogle = window.adsbygoogle || []).push({});
10-08 19:44