Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UnderlineingSystemType何时与当前类型实例不同_C#_.net_Clr_Base Class Library - Fatal编程技术网

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
,并为您的类型实现它

因此,在orindary
RuntimeType
的情况下,属性
UnderlineingSystemType
将返回
Type
属性的相等值,而在重写实现的情况下,(这是为了影响重新感染行为,但我重复我个人以前从未这样做过),将返回用户定义的类型值

编辑

事实上,评论中男生提供的链接很好:


我不能告诉你确切的原因,但是这里有一篇关于这个事实的文章()包含了一些关于这个的信息。我就等Jon Skeet。他从不让我失望。有趣的是。。。