.net GUID是基本类型还是复杂类型?[关闭]

pdtvr36n  于 2023-11-20  发布在  .NET
关注(0)|答案(4)|浏览(160)

很难说清楚这里问的是什么。这个问题模棱两可、模糊、不完整、过于宽泛或修辞,无法以目前的形式合理回答。如果需要帮助澄清这个问题,以便重新讨论,请visit the help center
十二年前就关门了。
我们将扩展方法类按照我们扩展的基本类型和复杂类型分开。我的问题很简单。Guid和string、int、DateTime等一起被认为是基本类型吗?或者在描述它时它会被认为是复杂类型吗?

更新

在回顾了答案之后,我非常感谢我能够从一些答案中收集到的澄清。然而,我的印象是好奇心杀死了猫,所以我投票结束我自己的问题。

cld4siwp

cld4siwp1#

这取决于你所谓的“原始数据类型”。
Wikipedia列出了这两个定义:

  • 基本类型是由编程语言提供的作为基本构建块的数据类型。2大多数语言允许从基本类型开始递归地构造更复杂的复合类型。
  • 内置类型是编程语言为其提供内置支持的数据类型。

根据第一个,Guid是一个构造类型,不是一个原语。
根据第二种说法,它也不是一个原始类型(因为它在BCL中提供,在System命名空间中,并且没有被任何.NET语言定义)。
更新:
下面是Type类的IsPrimitive方法:
基本类型是Boolean、Byte、SByte、Int16、UInt16、Int32、UInt32、Int64、UInt64、IntPtr、UIntPtr、Char、Double和Single。
因此,就.NET而言,它不是一个原始类型。
总结:根据上面三个独立的标准,Guid绝对不是一个原始类型。

g6baxovj

g6baxovj2#

这个问题的答案有些模糊。
语言规范指出:
也可以使用结构和运算符重载来实现C#语言中的新“原始”类型
这似乎意味着Guid是一个“原始”类型。但是Type提供了IsPrimitive属性,typeof(Guid).IsPrimitive将返回false
但是请注意,Guid不是由语言提供的,而是由.NET Framework提供的。
语言规范还指出,C#中的基本类型是Booleanbool),Bytebyte),SBytesbyte),Int16short)、UInt16Int32int),UInt32(uint),Int64long),UInt64(ulong)、IntPtrUIntPtrCharchar),Doubledouble)和Singlesingle),特别是省略了DateTimeGuid
我将完全失去描述符“primitive”,而只将Guid作为值类型引用。

ep6jt1vc

ep6jt1vc3#

根据您的定义,Guid将是一个原语。它是一个类似intDateTime的结构。它也由.NET Framework在System命名空间中提供。另外,它是不可变的,就像stringDateTime一样。
根据.NET的定义,它不是。
请参阅http://msdn.microsoft.com/en-us/library/system.type.isprimitive.aspx

  • 我会把它归为intDateTimestring。*
sdnqo3pr

sdnqo3pr4#

这取决于你称之为“基本类型”。Type Fundamentals文章说,“编译器直接支持的任何数据类型都称为基本类型。”我不指望编译器“知道”System.Guid
文章Primitive data types in C#没有将System.Guid列在原始类型中。
有人可能会说它必须是一个复合类型,因为它是一个由多个其他原语组成的128位实体。
我要说的是,Java不是一个原始类型,但你可能会得到其他人谁不同意我。

相关问题