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

Tamsayı sayısal türleri tamsayı sayılarını temsil eder. Tüm tam sayı sayısal türleri değer türleridir. Bunlar aynı zamanda basit türlerdir ve değişmez verilerle başlatılmış olabilir. Tüm tam sayı sayısal türleri aritmetik, bitwise mantıksal, karşılaştırmave eşitlik işleçlerini destekler.

İntegral türlerin özellikleri

C# aşağıdaki önceden tanımlanmış tam tamsayı 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 ile 255 arasında Unsigned 8-bit integer System.Byte
short -32.768 - 32.767 İmzalı 16 bit tamsayı System.Int16
ushort 0 ile 65.535 arasında Unsigned 16 bit integer System.UInt16
int -2.147.483.648 - 2.147.483.647 İmzalı 32 bit tamsayı System.Int32
uint 0 - 4.294.967.295 Unsigned 32 bit integer 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 Unsigned 64 bit integer System.UInt64
nint Platforma bağlıdır İmzalı 32 bit veya 64 bit tamsayı System.IntPtr
nuint Platforma bağlıdır Imzasız 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üğü ve .NET tür adı birbirinin yerine kullanılabilir. Örneğin, aşağıdaki bildirimlerde aynı türde değişkenler bildirgeleri yer almaktadır:

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

Tablonun nint nuint son iki satırındaki ve türleri, yerel boyutlu tamsayılardır. Bunlar, belirtilen .NET türleriyle dahili olarak temsil edilebilir, ancak her durumda anahtar sözcüğü ve .NET türü birbirinin yerine kullanılamaz. Derleyici, ve için işlemleri ve nint nuint dönüştürmeleri, işaretçi türleri ve için sağlamayıcı türü olarak System.IntPtr System.UIntPtr sağlar. Daha fazla bilgi için bkz. nint ve nuint türleri.

Her tamsayı türünün varsayılan değeri 0 sıfırdır. Yerel boyutlu türler dışında tamsayı türlerinin her biri, bu türün en düşük ve en yüksek değerini sağlayan MinValue MaxValue ve sabitleri içerir.

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

Tamsayı değişmezleri

Tamsayı sabitleri şu şekilde olabilir:

  • decimal: ön ek olmadan
  • onaltılık: veya ön 0x eki 0X ile
  • binary: veya ön 0b eki 0B ile (C# 7.0 ve üzerinde kullanılabilir)

Aşağıdaki kod, her biri için bir örnek içerir:

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

Yukarıdaki örnekte, _ C# 7.0'dan başlayarak desteklenen basamak ayırıcısı olarak kullanımı da gösterir. Her türlü sayısal değişmez değerle birlikte basamak ayırıcısını kullanabilirsiniz.

Tamsayı değişmez değerinin türü, soneki tarafından aşağıdaki gibi belirlenir:

  • Değişmez değerde sonek yoksa, türü değerinin temsili için şu türlerden ilki olur: int , uint , , long ulong .

    Not

    Değişmez değerler pozitif değerler olarak yorumlanır. Örneğin, değişmez değer türün sayısını temsil eder, ancak türün sayısıyla 0xFF_FF_FF_FF 4294967295 aynı bit uint -1 gösterimine sahip int olur. Belirli bir türe sahip bir değere ihtiyacınız varsa, bu türe bir değişmez değer yazın. Hedef unchecked türde bir değişmez değer temsili yoksa işleci kullanın. Örneğin, unchecked((int)0xFF_FF_FF_FF) -1 üretir.

  • Değişmez değer veya ile son ekli ise, türü değerinin temsili için şu türlerden U u ilki olur: uint , ulong .

  • Değişmez değer veya ile son ekli ise, türü değerinin temsili için şu türlerden L l ilki olur: long , ulong .

    Not

    Küçük harfli harfi l sonek olarak kullanabilirsiniz. Ancak bu, harfinin basamakla karıştırılmayabiliyor l olması nedeniyle bir derleyici uyarısı 1 üretir. Netlik L sağlamak için kullanın.

  • Değişmez veri , veya ile son ekli UL Ul uL ul LU Lu lU lu ise, türü ulong olur.

Tamsayı değişmez değeriyle temsil edilen değer değerini aşarsa, UInt64.MaxValue CS1021 derleyici hatası oluşur.

Bir tamsayı değişmez değerinin belirlenen türü ise ve değişmez değerle temsil edilen değer hedef türün aralığı içinde ise, değer örtülü olarak , , , , , veya değerine int sbyte byte short ushort uint ulong nint nuint dönüştürülür:

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

Yukarıdaki örnekte de olduğu gibi, değişmez değerin değeri hedef türün aralığı içinde yoksa, CS0031 derleyici hatası oluşur.

Bir tamsayı değişmez değeriyle temsil edilen değeri sabit değerin belirlenen türü dışında bir türe dönüştürmek için de bir tür 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üresiniz. Hedef türü kaynak türün tüm değerlerini depolayana kadar dönüştürme örtülü olur. Aksi takdirde, açık bir dönüştürme gerçekleştirmek için bir tür dönüştürme ifadesi kullan gerekir. Daha fazla bilgi için bkz. Yerleşik sayısal dönüştürmeler.

C# dili belirtimi

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

Ayrıca bkz.