如您所知,MSDN库说string、decimal和object不是原始类型。我要分享一段关于这一点的话:
原语类型为布尔型、字节类、SByte、Int16、UInt16、Int32、UInt32、Int64、UInt64、IntPtr、UIntPtr、Char、Double和Single。
我们也可以通过typeof(typeName).IsPrimitive属性来测试它。另外,我还在stackoverflow.com上阅读了关于stackoverflow.com类型的讨论。
现在,我正在通过(第四版)阅读一本名为C# CLR的书,这本书说(在第112页):

正如您所看到的,作者(Jeffrey)提到,所有这些类型都是原始类型。所以,谁能澄清我,他是什么意思?为什么这些string、decimal、object和dynamic类型都在原语列表中?
发布于 2017-12-01 12:15:13
有语言基元Torres和CLR基元类型。语言原语类型是编译器本身测试的特殊类型,如字符串和动态类型。CLR基元类型是其他类型的核心构建块,如布尔或Int32。反射函数IsPrimitive只对CLR原语类型返回true,它不知道用于编写代码的编程语言,因此它无法了解语言基元类型。了解哪些类型是语言基元类型的唯一方法是读取语言规范文档。正如所指出的,在C#中,dynamic是一个C#原语类型,因为编译器测试它是特殊的(它允许特殊的转换规则和动态成员调用)。但是,编译器在运行时将动态转换为对象。CLR根本不知道动态类型。
https://stackoverflow.com/questions/47589661
复制相似问题