繁体   English   中英

值类型和原始类型,以及非原始类型和引用类型有什么区别吗? 如果是,那么彼此之间有何不同

[英]Is there any difference Value Type and Primitive Type, and Non Primitive Type and Reference Type. If yes then how all are different from each other

C#:Value Type和Primitive Type,Non Primitive Type和Reference Type有区别吗? 如果是,那么它们之间有何不同。 我在 C# 文档中阅读了它,但它可以消除我对原始类型和非原始类型的疑虑。

C# 规范ECMA-334没有定义术语Primitive Type 它确实有术语Simple Type .Net库中还有Type.IsPrimitive

CLR (.Net) 规范ECMA-335也没有定义它,但它确实有Built-In Types ,但是它们与 C# 中的简单类型并不完全相同。

奇怪的是,ECMA-335 确实指定了简单类型,但仅适用于自定义属性构造函数,并且对应于Type.IsPrimitive

值/引用类型与此有些正交。

  • 值类型
    这是一个 CLR (.Net) 术语,与 C# 中的struct相同。它按值传递(复制/值语义)。

  • 参考类型
    这也是一个 CLR 术语,与class中的 class 相同。它通过引用传递。

  • 简单型
    这是一个 C# 术语。 它只包括struct ,并且只有以下是简单类型:
    sbyte byte short ushort int uint long ulong char float double bool decimal
    请注意, stringobject不在此列表中,即使它们在 C# 中具有别名。

  • Type.IsPrimitive
    这与上面的列表相同,只是它不包括decimal 目前尚不清楚它在规范中应该代表什么。

  • 内置类型
    这是一个 CLR 术语,指的是与上面相同的列表,但还包括objectstring (两者都是引用类型)和TypedReference

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM