C# UnderlineingSystemType何时与当前类型实例不同
C# UnderlineingSystemType何时与当前类型实例不同,c#,.net,clr,base-class-library,C#,.net,Clr,Base Class Library,System.Type包含一个underyingSystemType属性。MSDN表示: 指示公共语言运行库提供的 表示此类型 在大多数情况下,此属性仅返回当前的类型实例 我的问题是,在什么情况下,此属性不返回当前的类型实例本身。在这些情况下,当前的类型实例和返回的基础系统类型是什么类型?老实说,我从来没有自己做过,但我知道可以创建自己的运行时类型定义,就像您指定的类型一样 如果您注意到类型类是抽象的,并且有很多抽象成员。发生的情况是,您的类型(无论是什么类型)自动创建从type类派生的Runt
System.Type
包含一个underyingSystemType
属性。MSDN表示:
指示公共语言运行库提供的
表示此类型
在大多数情况下,此属性仅返回当前的类型
实例
我的问题是,在什么情况下,此属性不返回当前的
类型
实例本身。在这些情况下,当前的类型
实例和返回的基础系统类型是什么类型?老实说,我从来没有自己做过,但我知道可以创建自己的运行时类型
定义,就像您指定的类型一样
如果您注意到类型
类是抽象的,并且有很多抽象成员。发生的情况是,您的类型(无论是什么类型)自动创建从type
类派生的RuntimeType
,并为您的类型实现它
因此,在orindaryRuntimeType
的情况下,属性UnderlineingSystemType
将返回Type
属性的相等值,而在重写实现的情况下,(这是为了影响重新感染行为,但我重复我个人以前从未这样做过),将返回用户定义的类型值
编辑
事实上,评论中男生提供的链接很好:
我不能告诉你确切的原因,但是这里有一篇关于这个事实的文章()包含了一些关于这个的信息。我就等Jon Skeet。他从不让我失望。有趣的是。。。