.NET 數據類型概述


  任何一門開發語言都需要數據類型作為其基礎根本,就如同自然語言中的文字一般,所以想要掌握一門開發語言就要先了解其中的數據類型,接下來我就談談我對.NET的數據類型的了解(開發語言以C#為主)。

  數據類型

  在C#中數據類型主要可以分為值類型、引用類型和指針類型,以下是一個數據類型的歸類表:

  • ValueType
    • 數值數據
      • sbyte:-128~127
      • byte:0~255
      • short:-32768~32767
      • ushort:0~65535
      • int:-2147483648~2147483647
      • uint:0~4294967295
      • long:-9223372036854775808~9223372036854775807
      • ulong:0~18446744073709551615
      • float:1.5*10^-45~3.4*10^38
      • double:5*10^-324~1.7*10^308
      • decimal:1*10^-28~7.9*10^2
    • Boolean
      • 關鍵字:bool
      • 值范圍:True或False
    • Char
      • 關鍵字:char
      • 值范圍:一個Unicode字符,存儲0~65535之間的整數
    • DateTime和TimeSpan
    • Numerics
      • 結構:BigInteger
    • 枚舉
      • 底層存儲:byte、short、int(默認)、long
    • 結構
  • 引用類型
    • Class 類
    • Interface 接口
    • Dynamic
    • Object 超級父類
    • String 字符串
    • Delegate 委托
    • Array 數組
  • 指針類型

   數據類型默認值

  • 數值數據:0
  • Boolean:false
  • Char:單個空字符
  • DateTime和TimeSpan:1/1/0001 12:00:00 AM
  • Numerics:0
  • 引用類型:null

  可空類型

  用於表示沒有值的數值數據,在實際類型的值上加上null,這種語法只對值類型是合法的,語法是只要在值類型關鍵字上加?后綴。例如: int? nullableInt = 0;
 
  內存分配
 
  值類型的變量是分配在棧上,當變量離開定義域范圍就會被內存移除。
  引用類型變量則是分配在堆上進行托管,有垃圾回收機制控制。
 
  復制
  • 淺復制
     當ValueType中包含引用類型時,生成2個獨立的ValueType的值,但其中的引用類型將生成一個引用的副本,即指向內存中的同一個對象的引用,改變其中一個的值,另一個也會隨之改變。
  • 深復制
     將內部引用的狀態完全復制到一個新對象中,需要實現ICloneable接口。
 
  賦值操作
 
  值類型賦值是 復制一份副本,2個變量是獨立操作的。
 
  引用類型賦值是 2個變量是指向托管堆中的同一個對象,改變其中一個變量的值,另一個也會改變。
 
  值類型中包含引用類型時賦值是默認為淺復制。

  傳遞

  • 值類型
    • 按值傳遞
     傳遞變量的一個數據副本。
  • 引用類型
    • 按值傳遞
     復制了指向調用者對象的引用,可以改變對象的狀態數據,但是不能引用重新賦值一個新對象
    • 按引用傳遞
     可以改變對象的狀態數據,也可以改變引用在內存中的指向,把引用重新賦值一個新的對象

  類型轉換

  • 隱式轉換
    • 寬化
     隱式向上轉換,從值范圍小的類型向值范圍大的類型轉換,不會丟失數據。
  • 顯示轉換
    • 強制類型轉換
    • 窄化
     顯示向下轉換,從值范圍大的類型向值范圍小的類型轉換
      • 溢出檢測(默認不檢測)
        • 代碼級檢測
          • unchecked
          • checked

        • 項目級檢測
          • VS->項目屬性->生成->高級->檢測運算上下溢
  • Convert命令
     可進行顯示的寬化、窄化、字符串解析數值等操作
  • 自定義類型轉換
     使用關鍵字explicit和implicit自定義類型轉換。implicit隱式轉換運算符更容易使用,但是如果您希望運算符的用戶能夠意識到正在進行轉換,則顯式運算符很有用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM