Aracılığıyla paylaş


Tam sayı türleri (C# başvurusu)

Tamsayı sayısal türleri tamsayı sayılarını gösterir. Tüm tam sayı sayısal türleri değer türleridir. İntegral türleri basit türlerdir ve bunları değişmez değerlerle başlatırsınız. Tüm tam sayı sayısal türleri aritmetik, bit düzeyinde mantıksal, karşılaştırma ve eşitlik işleçlerini destekler.

C# dili başvuru belgesi, C# dilinin en son yayımlanan sürümünü gösterir. Ayrıca, yaklaşan dil sürümü için genel önizlemelerdeki özelliklere yönelik ilk belgeleri içerir.

Belgelerde ilk olarak dilin son üç sürümünde veya geçerli genel önizlemelerde sunulan tüm özellikler tanımlanır.

Tavsiye

Bir özelliğin C# dilinde ilk tanıtıldığı zamanları bulmak için C# dil sürümü geçmişi makalesine bakın.

İntegral türlerinin özellikleri

C# aşağıdaki önceden tanımlanmış tam sayı türlerini destekler:

C# türü/anahtar sözcüğü Aralık Boyut .NET türü
sbyte -128 - 127 İmzalı 8 bit tamsayı System.SByte
byte 0 - 255 İşaretsiz 8 bit tamsayı System.Byte
short -32.768 - 32.767 İmzalı 16 bit tamsayı System.Int16
ushort 0 - 65.535 İşaretsiz 16 bit tamsayı System.UInt16
int -2.147.483.648 ile 2.147.483.647 İmzalı 32 bit tam sayı System.Int32
uint 0 - 4.294.967.295 İşaretsiz 32 bit tamsayı System.UInt32
long -9,223,372,036,854,775,808 - 9,223,372,036,854,775,807 İmzalı 64 bit tamsayı System.Int64
ulong 0 - 18.446.744.073.709.551.615 İşaretsiz 64 bit tamsayı System.UInt64
nint Platforma bağlıdır (çalışma zamanında hesaplanır) İmzalı 32-bit veya 64-bit tamsayı System.IntPtr
nuint Platforma bağlıdır (çalışma zamanında hesaplanır) İşaretsiz 32 bit veya 64 bit tamsayı System.UIntPtr

Son ikisi dışındaki tüm tablo satırlarında, en soldaki sütundaki her C# türü anahtar sözcüğü, karşılık gelen .NET türü için bir diğer addır. Anahtar sözcük ve .NET tür adı birbirinin yerine kullanılabilir. Örneğin, aşağıdaki bildirimler aynı türdeki değişkenleri bildirir:

int a = 123;
System.Int32 b = 123;

nint Tablonun son iki satırındaki ve nuint türleri yerel boyutlu tamsayılardır. nint tanımlamak için ve nuint bağlamsal anahtar sözcüklerini kullanabilirsiniz. Yerel boyutlu tamsayılar, 32 bit işlemde çalıştırılırken 32 bit tamsayılar veya 64 bit işlemde çalıştırılırken 64 bit tamsayılardır. Bunları birlikte çalışma senaryoları, düşük düzeyli kitaplıklar için ve tamsayı matematiğin yoğun olarak kullanıldığı senaryolarda performansı iyileştirmek için kullanın.

Yerel boyutlu tamsayı türleri dahili olarak .NET türleri System.IntPtr ve System.UIntPtrolarak temsil edilir. nint ve nuint türleri, temel alınan türlerin diğer adlarıdır.

Her integral türünün varsayılan değeri sıfırdır 0.

Tamsayı türlerinin her biri, o türün en düşük ve en yüksek değerlerini sağlayan MinValue ve MaxValue özelliklerine sahiptir. Bu özellikler, yerel boyutlu türlerin (nint ve nuint) durumu dışında derleme zamanı sabitleridir. MinValue ve MaxValue özellikleri yerel boyutlu türler için çalışma zamanında hesaplanır. Bu türlerin boyutları işlem ayarlarına bağlıdır.

System.Numerics.BigInteger Üst veya alt sınırları olmayan imzalı bir tamsayıyı temsil etmek için yapısını kullanın.

Tamsayı değişmez değerleri

Tamsayı değişmez değerleri:

  • decimal: ön ek olmadan
  • onaltılık: 0x veya 0X ön ekiyle
  • ikili sayı sistemi: 0b veya 0B ön eki ile

Aşağıdaki kod, her birinin bir örneğini gösterir:

var decimalLiteral = 42;
var hexLiteral = 0x2A;
var binaryLiteral = 0b_0010_1010;

Yukarıdaki örnekte _'nin basamak ayırıcısı olarak kullanımı da görülmektedir. Basamak ayırıcısını her türlü sayı sabitiyle kullanabilirsiniz.

Soneki, tamsayı değişmez değeri türünü aşağıdaki gibi belirler:

  • Değişmez değerde sonek yoksa, derleyici türü değerinin temsil edilebileceği aşağıdaki türlerden ilki olarak atar: int, , uint, long. ulong

    Uyarı

    Derleyici değişmez değerleri pozitif değerler olarak yorumlar. Örneğin, literal 0xFF_FF_FF_FF, 4,294,967,295 türü için uint sayısını temsil eder, ancak -1 türü için int sayısıyla aynı bit temsilini paylaşır. Belirli bir türde bir değere ihtiyacınız varsa, bir sabiti o türe dökün. unchecked Sabit değer hedef türde temsil edilemiyorsa işlecini kullanın. Örneğin, unchecked((int)0xFF_FF_FF_FF) üretir -1.

  • Değişmez değer veya u son ekini U içeriyorsa, derleyici türü değerinin temsil edilebileceği aşağıdaki türlerden ilki olarak atar: uint, ulong.

  • Değişmez değer veya l son ekini L içeriyorsa, derleyici türü değerinin temsil edilebileceği aşağıdaki türlerden ilki olarak atar: long, ulong.

    Uyarı

    Küçük harfi l sonek olarak kullanabilirsiniz. Bununla birlikte, l harfin l rakamı 1ile karıştırılabildiği için derleyici uyarısı oluşturur. Netlik için kullanın L .

  • Değişmez değer , , , , , LUul, , Lu, lUveya lu soneklerinden ULbirini içeriyorsa, derleyici türü olarak ulongatar. uLUl

Bir tamsayı değişmez ile temsil edilen değer UInt64.MaxValue'i aşarsa, CS1021 derleyici hatası oluşur.

Derleyici bir tamsayı değişmez değerinin türünü olarak int belirlerse ve değişmez değer tarafından temsil edilen değer hedef türün aralığındaysa, değer örtük olarak , , byte, short, ushort, uint, ulong, nintveya nuintöğesine dönüştürülebilirsbyte:

byte a = 17;
byte b = 300;   // CS0031: Constant value '300' cannot be converted to a 'byte'

Önceki örnekte gösterildiği gibi, değişmez değer hedef türün sınırları içinde değilse CS0031 derleyici hatası verilir.

Bir tamsayı değişmezi ile temsil edilen değeri, değişmez değerin belirlenen türünden başka bir türe dönüştürmek için de bir dönüştürme kullanabilirsiniz.

var signedByte = (sbyte)42;
var longVariable = (long)42;

Dönüşümler

Herhangi bir tam sayı sayısal türünü başka bir tam sayı sayısal türüne dönüştürebilirsiniz. Hedef türü kaynak türün tüm değerlerini depolayabilirse, dönüştürme örtük olur. Aksi takdirde, açık dönüştürme gerçekleştirmek için bir atama ifadesi kullanın. Daha fazla bilgi için bkz. Yerleşik sayısal dönüştürmeler.

Yerel boyutlu tamsayılar

Depolama alanı hedef makinedeki doğal tamsayı boyutuyla eşleştiğinden, yerel boyutlu tamsayı türleri özel davranışa sahiptir.

  • Çalışma zamanında yerel boyutlu bir tamsayı boyutunu almak için kullanın sizeof(). Ancak, kodun güvenli olmayan bir bağlamda derlenmiş olması gerekir. Örneğin:

    Console.WriteLine($"size of nint = {sizeof(nint)}");
    Console.WriteLine($"size of nuint = {sizeof(nuint)}");
    
    // output when run in a 64-bit process
    //size of nint = 8
    //size of nuint = 8
    
    // output when run in a 32-bit process
    //size of nint = 4
    //size of nuint = 4
    

    Statik IntPtr.Size ve UIntPtr.Size özelliklerinden eşdeğer değeri de alabilirsiniz.

  • Çalışma zamanında yerel boyutlu tamsayıların en düşük ve en yüksek değerlerini almak için MinValue ve MaxValue anahtar sözcüklerini nint ve nuint statik özellikler olarak, aşağıdaki örnekte olduğu gibi kullanın:

    Console.WriteLine($"nint.MinValue = {nint.MinValue}");
    Console.WriteLine($"nint.MaxValue = {nint.MaxValue}");
    Console.WriteLine($"nuint.MinValue = {nuint.MinValue}");
    Console.WriteLine($"nuint.MaxValue = {nuint.MaxValue}");
    
    // output when run in a 64-bit process
    //nint.MinValue = -9223372036854775808
    //nint.MaxValue = 9223372036854775807
    //nuint.MinValue = 0
    //nuint.MaxValue = 18446744073709551615
    
    // output when run in a 32-bit process
    //nint.MinValue = -2147483648
    //nint.MaxValue = 2147483647
    //nuint.MinValue = 0
    //nuint.MaxValue = 4294967295
    
  • ve nint aralığının nuint tamamı daha büyük olsa da derleme zamanı sabitleri 32 bitlik bir aralıkla sınırlandırılır:

  • Derleyici, diğer sayısal türlere örtük ve açık dönüştürmeler sağlar. Daha fazla bilgi için bkz. Yerleşik sayısal dönüştürmeler.

  • Yerel boyutlu tamsayı sabitleri için belirli bir söz dizimi mevcut değildir. Yerel boyutlu bir tamsayının bir değişmez değer olduğunu belirten bir sonek yoktur. Örneğin L, bir long işaret etmek içindir. Bunun yerine diğer tamsayı değerlerinin örtük veya açık atamalarını kullanın. Örneğin:

    nint a = 42
    nint a = (nint)42;
    

C# dil belirtimi

Daha fazla bilgi için C# dil belirtimininaşağıdaki bölümlerine bakın:

Ayrıca bakınız