整數的數字型別- C# 參考

文章推薦指數: 80 %
投票人數:10人

int a = 123; System.Int32 b = 123;. 資料表 nint 最後兩個數據列中的和 nuint 類型是原生大小的整數。

從C# 9.0 開始,您可以使用 nint 和 nuint ... 跳到主要內容 已不再支援此瀏覽器。

請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。

下載MicrosoftEdge 其他資訊 目錄 結束焦點模式 閱讀英文 儲存 目錄 閱讀英文 儲存 Twitter LinkedIn Facebook 電子郵件 目錄 C#參考(整數型別) 發行項 06/23/2022 4位參與者 本文內容 整數數數值型別代表整數數位。

所有整數數數值型別都是實值型別。

它們也是簡單的類型,而且可以使用常值初始化。

所有整數數數值型別都支援算術、位邏輯、比較和等號比較運算子。

整數型別的特性 C#支援下列預先定義的整數型別: C#型別/關鍵字 範圍 大小 .NET類型 sbyte -128到127 帶正負號的8位元整數 System.SByte byte 0至255 不帶正負號的8位元整數 System.Byte short -32,768至32,767 帶正負號的16位元整數 System.Int16 ushort 0到65,535 不帶正負號的16位元整數 System.UInt16 int -2,147,483,648至2,147,483,647 帶正負號的32位元整數 System.Int32 uint 0到4,294,967,295 不帶正負號的32位元整數 System.UInt32 long -9,223,372,036,854,775,808至9,223,372,036,854,775,807 帶正負號的64位元整數 System.Int64 ulong 0到18,446,744,073,709,551,615 不帶正負號的64位元整數 System.UInt64 nint 取決於在執行時間計算的平臺() 帶正負號的32位或64位整數 System.IntPtr nuint 取決於在執行時間計算的平臺() 不帶正負號的32位或64位整數 System.UIntPtr 在最後兩個以外的所有資料表資料列中,最左邊資料行中的每個C#類型關鍵字都是對應.NET類型的別名。

關鍵字和.NET類型名稱可交換。

例如,下列宣告會宣告相同型別的變數: inta=123; System.Int32b=123; 資料表nint最後兩個數據列中的和nuint類型是原生大小的整數。

從C#9.0開始,您可以使用nint和nuint關鍵字來定義原生大小的整數。

在32位進程中執行時,這些是32位整數,或在64位進程中執行時為64位整數。

它們可用於Interop案例、低階程式庫,以及在廣泛使用整數數學的案例中優化效能。

原生大小的整數類型會在內部表示為.NET型別System.IntPtr和System.UIntPtr。

從C#11開始,nint和nuint型別是基礎類型的別名。

每個整數型別的預設值都是零(0)。

每個整數型別都有MinValue和MaxValue屬性,可提供該型別的最小值和最大值。

這些屬性是編譯時間常數,但原生大小類型的大小nint(和nuint)除外。

MinValue和MaxValue屬性會在執行時間計算原生大小類型。

這些類型的大小取決於處理器。

使用System.Numerics.BigInteger結構來表示帶正負號的整數,無上下限。

整數常值 整數常值可以是 decimal:不含任何前置詞 十六進位:具有0x或0X前置詞 binary:具有0bC#7.0和更新版本中提供的或0B前置詞() 下列程式碼示範每個範例: vardecimalLiteral=42; varhexLiteral=0x2A; varbinaryLiteral=0b_0010_1010; 上述範例也會示範使用_做為數位分隔符號,從C#7.0開始支援。

您可以使用數位分隔符號搭配所有類型的數值常值。

整數常值的類型取決於其後綴,如下所示: 如果常值沒有後置詞,則其型別為下列類型的第一個類型,其值可以表示:int、、uint、long、ulong。

注意 常值會解譯為正值。

例如,常值0xFF_FF_FF_FF代表類型的數目4294967295uint,不過其位表示方式與類型的數目-1int相同。

如果您需要特定類型的值,請將常值轉換成該類型。

unchecked如果目標型別中無法表示常值,請使用運算子。

例如,unchecked((int)0xFF_FF_FF_FF)產生-1。

如果常值後面U加上或u,則其型別是下列類型的第一個類型,其中可以表示其值:uint、ulong。

如果常值後面L加上或l,則其型別是下列類型的第一個類型,其中可以表示其值:long、ulong。

注意 您可以使用小寫字母l做為尾碼。

不過,這會產生編譯器警告,因為字母l可能會與數位1混淆。

為了清楚起見,請使用L。

如果常值尾碼UL為、Ul、uL、、LuLUlUul、、或lu,則其類型為。

ulong 如果整數常值所代表的值超出UInt64.MaxValue,就會發生編譯錯誤CS1021。

如果整數常值的判定型別是int,而常值所代表的值是在目的地型別的範圍內,則可以隱含地將值轉換成sbyte、byte、、short、、ushortulonguint、nint或:nuint bytea=17; byteb=300;//CS0031:Constantvalue'300'cannotbeconvertedtoa'byte' 如上述範例所示,如果常值的值不在目的地類型的範圍內,則會發生編譯器錯誤CS0031。

您也可以使用轉換,將整數常值所代表的值轉換成常數值型別以外的類型: varsignedByte=(sbyte)42; varlongVariable=(long)42; 轉換 您可以將任何整數數數值型別轉換成任何其他整數數數值型別。

如果目的地類型可以儲存來源類型的所有值,則轉換是隱含的。

否則,您必須使用轉換運算式來執行明確的轉換。

如需詳細資訊,請參閱內建數值轉換。

原生大小的整數 原生大小的整數類型具有特殊行為,因為儲存體是由目的電腦上的自然整數大小所決定。

若要在執行時間取得原生大小的整數大小,您可以使用sizeof()。

不過,程式碼必須在不安全的內容中編譯。

例如: Console.WriteLine($"sizeofnint={sizeof(nint)}"); Console.WriteLine($"sizeofnuint={sizeof(nuint)}"); //outputwhenrunina64-bitprocess //sizeofnint=8 //sizeofnuint=8 //outputwhenrunina32-bitprocess //sizeofnint=4 //sizeofnuint=4 您也可以從靜態IntPtr.Size和UIntPtr.Size屬性取得對等的值。

若要在執行時間取得原生大小整數的最小值和最大值,請使用MinValue和MaxValue作為具有和nuint關鍵字的靜態屬性nint,如下列範例所示: Console.WriteLine($"nint.MinValue={nint.MinValue}"); Console.WriteLine($"nint.MaxValue={nint.MaxValue}"); Console.WriteLine($"nuint.MinValue={nuint.MinValue}"); Console.WriteLine($"nuint.MaxValue={nuint.MaxValue}"); //outputwhenrunina64-bitprocess //nint.MinValue=-9223372036854775808 //nint.MaxValue=9223372036854775807 //nuint.MinValue=0 //nuint.MaxValue=18446744073709551615 //outputwhenrunina32-bitprocess //nint.MinValue=-2147483648 //nint.MaxValue=2147483647 //nuint.MinValue=0 //nuint.MaxValue=4294967295 您可以在下列範圍內使用常數值: 針對nint:Int32.MinValue至Int32.MaxValue。

針對nuint:UInt32.MinValue至UInt32.MaxValue。

編譯器提供對其他數數值型別的隱含和明確轉換。

如需詳細資訊,請參閱內建數值轉換。

原生大小的整數常值沒有直接語法。

沒有後置詞表示常值是原生大小的整數,例如L表示long。

您可以改用其他整數值的隱含或明確轉換。

例如: ninta=42 ninta=(nint)42; C#語言規格 如需詳細資訊,請參閱C#語言規格的下列幾節: 整數型別 整數常值 另請參閱 C#參考資料 值類型 浮點類型 標準數值格式字串 .NET中的數值 本文內容



請為這篇文章評分?