很难说清楚这里问的是什么。这个问题模棱两可、模糊、不完整、过于宽泛或修辞,无法以目前的形式合理回答。如果需要帮助澄清这个问题,以便重新讨论,请visit the help center。
十二年前就关门了。
我们将扩展方法类按照我们扩展的基本类型和复杂类型分开。我的问题很简单。Guid和string、int、DateTime等一起被认为是基本类型吗?或者在描述它时它会被认为是复杂类型吗?
更新
在回顾了答案之后,我非常感谢我能够从一些答案中收集到的澄清。然而,我的印象是好奇心杀死了猫,所以我投票结束我自己的问题。
4条答案
按热度按时间cld4siwp1#
这取决于你所谓的“原始数据类型”。
Wikipedia列出了这两个定义:
根据第一个,
Guid
是一个构造类型,不是一个原语。根据第二种说法,它也不是一个原始类型(因为它在BCL中提供,在
System
命名空间中,并且没有被任何.NET语言定义)。更新:
下面是
Type
类的IsPrimitive
方法:基本类型是Boolean、Byte、SByte、Int16、UInt16、Int32、UInt32、Int64、UInt64、IntPtr、UIntPtr、Char、Double和Single。
因此,就.NET而言,它不是一个原始类型。
总结:根据上面三个独立的标准,
Guid
绝对不是一个原始类型。g6baxovj2#
这个问题的答案有些模糊。
语言规范指出:
也可以使用结构和运算符重载来实现C#语言中的新“原始”类型
这似乎意味着
Guid
是一个“原始”类型。但是Type
提供了IsPrimitive
属性,typeof(Guid).IsPrimitive
将返回false
。但是请注意,
Guid
不是由语言提供的,而是由.NET Framework提供的。语言规范还指出,C#中的基本类型是
Boolean
(bool
),Byte
(byte
),SByte
(sbyte
),Int16
(short
)、UInt16
、Int32
(int
),UInt32(uint
),Int64
(long
),UInt64(ulong
)、IntPtr
、UIntPtr
、Char
(char
),Double
(double
)和Single
(single
),特别是省略了DateTime
和Guid
。我将完全失去描述符“primitive”,而只将
Guid
作为值类型引用。ep6jt1vc3#
根据您的定义,Guid将是一个原语。它是一个类似
int
,DateTime
的结构。它也由.NET Framework在System
命名空间中提供。另外,它是不可变的,就像string
和DateTime
一样。根据.NET的定义,它不是。
请参阅http://msdn.microsoft.com/en-us/library/system.type.isprimitive.aspx
int
、DateTime
和string
。*sdnqo3pr4#
这取决于你称之为“基本类型”。Type Fundamentals文章说,“编译器直接支持的任何数据类型都称为基本类型。”我不指望编译器“知道”
System.Guid
。文章Primitive data types in C#没有将
System.Guid
列在原始类型中。有人可能会说它必须是一个复合类型,因为它是一个由多个其他原语组成的128位实体。
我要说的是,Java不是一个原始类型,但你可能会得到其他人谁不同意我。