Ekinlikler
17 Mar 21 - 21 Mar 10
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Hemen kaydolunBu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Tamsayı sayısal türleri tamsayı sayılarını gösterir. Tüm tam sayı sayısal türleri değer türleridir. Bunlar ayrıca basit türlerdir ve değişmez değerlerle başlatılabilir. 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# aşağıdaki önceden tanımlanmış tam sayı türlerini destekler:
C# türü/anahtar sözcüğü | Aralık | Size | .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 - 2.147.483.647 | İmzalı 32 bit tamsayı | 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. Yerel boyutlu tamsayıları tanımlamak için ve nuint
bağlamsal anahtar sözcüklerini kullanabilirsiniznint
. Bunlar 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ılabilir.
Yerel boyutlu tamsayı türleri dahili olarak .NET türleri System.IntPtr ve System.UIntPtrolarak temsil edilir. C# 11'den başlayarak ve nuint
türleri temel nint
alınan türlerin diğer adlarıdır.
Her integral türünün varsayılan değeri sıfırdır 0
.
İntegral türlerinin her biri, bu türün en düşük ve en yüksek değerini sağlayan ve özelliklerine sahiptir MinValue
MaxValue
. 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
0X
ön ekiyle 0x
0B
ön eki ile 0b
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 ayrıca basamak ayırıcısı olarak kullanımı _
gösterilmektedir. Basamak ayırıcısını her türlü sayısal değişmez değerle kullanabilirsiniz.
Tamsayı değişmez değeri türü, soneki tarafından aşağıdaki gibi belirlenir:
Değişmez değerde sonek yoksa, türü değerinin temsil edilebileceği aşağıdaki türlerden ilkidir: int
, uint
, , long
. ulong
Not
Değişmez değerler pozitif değerler olarak yorumlanır. Örneğin, değişmez değer 0xFF_FF_FF_FF
türün uint
sayısını 4294967295
temsil eder, ancak türün sayısıyla -1
aynı bit gösterimine int
sahiptir. Belirli bir türde bir değere ihtiyacınız varsa, bu türe bir değişmez değer yazın. unchecked
Hedef türünde değişmez değer temsil edilemiyorsa işlecini kullanın. Örneğin, unchecked((int)0xFF_FF_FF_FF)
üretir -1
.
Değişmez değer veya u
tarafından U
soneklenmişse, türü değerinin temsil edilebileceği aşağıdaki türlerden ilkidir: uint
, ulong
.
Değişmez değer veya l
tarafından L
soneklenmişse, türü değerinin temsil edilebileceği aşağıdaki türlerden ilkidir: long
, ulong
.
Not
Küçük harfi l
sonek olarak kullanabilirsiniz. Ancak, bu bir derleyici uyarısı oluşturur çünkü harf l
ile basamak 1
karıştırılabilir. Netlik için kullanın L
.
Değişmez değer , , Ul
, , uL
, ul
, LU
, Lu
lU
, veya lu
ile soneklenmişse UL
türü olurulong
.
Bir tamsayı değişmez değeriyle temsil edilen değer değerini aşarsa UInt64.MaxValue, bir derleyici hatası CS1021 oluşur.
Bir tamsayı değişmez int
değerinin belirlenen türü ise ve değişmez değer tarafından temsil edilen değer hedef türün aralığındaysa, değer örtük olarak , , byte
, ushort
short
, , uint
, ulong
nint
veya nuint
öğesine sbyte
dönüştürülebilir:
byte a = 17;
byte b = 300; // CS0031: Constant value '300' cannot be converted to a 'byte'
Yukarıdaki örnekte gösterildiği gibi, değişmez değerin değeri hedef türün aralığında değilse, CS0031 derleyici hatası oluşur.
Bir tamsayı değişmez değeriyle temsil edilen değeri, sabit değerin belirlenen türünden başka bir türe dönüştürmek için de bir atama kullanabilirsiniz:
var signedByte = (sbyte)42;
var longVariable = (long)42;
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 kullanmanız gerekir. Daha fazla bilgi için bkz . Yerleşik sayısal dönüştürmeler.
Depolama alanı hedef makinedeki doğal tamsayı boyutuna göre belirlendiğinden, yerel boyutlu tamsayı türleri özel davranışa sahiptir.
Çalışma zamanında yerel boyutlu bir tamsayı boyutunu almak için kullanabilirsiniz 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 ve UIntPtr.Size özelliklerden IntPtr.Size 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 aşağıdaki örnekte olduğu gibi ve MaxValue
anahtar sözcükleriyle nint
statik özellikler olarak ve nuint
kullanınMinValue
:
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
Aşağıdaki aralıklarda sabit değerler kullanabilirsiniz:
nint
: Int32.MinValue to Int32.MaxValue.nuint
: UInt32.MinValue to UInt32.MaxValue.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ı değişmez değerleri için doğrudan söz dizimi yoktur. Değişmez değerin yerel boyutlu bir tamsayı olduğunu belirten bir sonek yoktur. Örneğin L
, bir long
belirtmelidir. Bunun yerine diğer tamsayı değerlerinin örtük veya açık atamalarını kullanabilirsiniz. Örneğin:
nint a = 42
nint a = (nint)42;
Daha fazla bilgi için C# dil belirtiminin aşağıdaki bölümlerine bakın:
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Ekinlikler
17 Mar 21 - 21 Mar 10
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Hemen kaydolun