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
0xeki0Xile - binary: veya ön
0beki0Bile (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, ,longulong.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_FF4294967295aynı bituint-1gösterimine sahipintolur. Belirli bir türe sahip bir değere ihtiyacınız varsa, bu türe bir değişmez değer yazın. Hedefuncheckedtü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
Uuilki olur:uint,ulong.Değişmez değer veya ile son ekli ise, türü değerinin temsili için şu türlerden
Llilki olur:long,ulong.Not
Küçük harfli harfi
lsonek olarak kullanabilirsiniz. Ancak bu, harfinin basamakla karıştırılmayabiliyorlolması nedeniyle bir derleyici uyarısı1üretir. NetlikLsağlamak için kullanın.Değişmez veri , veya ile son ekli
ULUluLulLULulUluise, türüulongolur.
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: