簡體   English   中英

“原始類型”與“內置值類型”

[英]“Primitive types” versus “built-in value types”

我最近在使用Array.SetValue(Int32)方法時在C#中遇到了異常。 例外是:

無法從源類型擴展到目標類型,因為源類型不是基本類型或無法完成轉換。

對“原始”這個詞的引用讓我感到有些驚訝,因為我認為傾向於將這些類型稱為內置類型,而“原始類型”一詞也是一個非正式術語。 “原始”類型和“內置值類型”之間有什么區別? 我沒有在C#語言規范中找到原始類型的定義。

原始類型未在C#語言規范中定義。 它們在.NET本身中定義,而原始類型的最佳參考是直接在MSDN上查看Type.IsPrimitive 具體來說,“備注”部分列出了可用的基元類型。

這里我們有一個完整的參考,這些是CLI規范中定義的原始類型(第I.8.2.2節):

流行的看法相反,僅僅因為一個類型都有一個相應的關鍵字並不能使它基本類型,最好的例子可能是string

另一方面,值類型也可以是原語,也可以不是原語。 除了CLI規范中定義的值之外,.NET Framework還有許多“內置”的值類型,但它們不歸類為原語。 一個很好的例子是DateTime ,它是.NET Framework提供的一個struct ,根據該定義,它可以被認為是“內置值類型”。 您可以在此處閱讀有關值類型的更多信息(當然也將涵蓋內置類型)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM