这个问题涉及这样一个事实,即所有这些工具生成的代码总是有大量无效的成员变量(字段),如下所示:
private short $STATIC$Report_Print211C1280B1$nHeight;private ArrayList $STATIC$Report_Print211C1280B1$oColumnlefts;private StaticLocalinitFlag $STATIC$Report_Print211C1280B1$oColumnlefts$Init;
有人可以解释为什么生成的代码有这些无效的成员变量以及我如何解决这些变量?
解决方法 这些是由VB.NET编译器生成的用于实现Static关键字的标识符.例如:Class Example Public Sub test() Static lookhere As Integer = 42 End SubEnd Class
生成这个IL:
.fIEld private specialname int32 $STATIC$test01$lookhere.fIEld private specialname class [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.StaticLocalinitFlag $STATIC$test01$lookhere$Init
通过在字段名称中使用保留字母,编译器可以确保永远不会与另一个字段发生意外冲突.在C#语言中没有与Static直接等价的东西.您可以将它们保留为类中的私有字段,但您必须注意初始化. $Init标志的目的,而不是很多确保变量被正确初始化的IL.您需要手动重命名它们.
总结以上是内存溢出为你收集整理的c# – 反编译VB.Net程序集会生成带有无效成员变量名的代码;名称以$STATIC $开头全部内容,希望文章能够帮你解决c# – 反编译VB.Net程序集会生成带有无效成员变量名的代码;名称以$STATIC $开头所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)