|
12
|
| BenAlabaster · 技术社区 · 16 年前 |
|
|
1
15
我认为这是反射器的一些错误解释。实际上,如果您这样编写代码:
并在发布模式下编译,您将在Reflector中看到:
请记住,C#编译器不是生成C#代码,而是生成IL,因此您在Reflector中看到的并不总是真实的。因此,为了清楚地了解幕后发生的事情,您可以查看编译器生成的真实代码:
|
|
|
2
6
这不仅是无效的C#,而且是误导性的——它表明对
在您的原始示例中,它作为
|
|
|
3
1
这不是最优雅的解决方案,但它应该为您指明正确的方向。正如Yuriy在上面的评论中所说,这可能与您没有显式地为属性声明get和set有关。 |
|
|
4
0
当您将变量作为ref或out传递时,调用实际上指向它最初所在的内存。因此,如果允许将属性作为引用传递,则意味着使类成员不一致。这就是这个问题背后的原因。 |