nint ve nuint türleri (C# başvurusu)
C# 9.0'dan başlayarak, yerel boyutlu tamsayıları tanımlamak nint nuint için ve anahtar sözcüklerini kullanabilirsiniz. Bunlar, 32 bit işlemde çalışan 32 bit tamsayılar veya 64 bit işlemde çalışan 64 bit tamsayılardır. Bunlar birlikte çalışma senaryoları, alt düzey kitaplıklar ve tamsayı matematiğin yoğun olarak kullanılan senaryolarda performansı iyileştirmek için kullanılabilir.
Yerel boyutlu tamsayı türleri dahili olarak .NET türleri ve olarak temsil System.IntPtr System.UIntPtr eder. Diğer sayısal türlere göre anahtar sözcükler yalnızca türlerin diğer adları değildir. Aşağıdaki deyimler eşdeğer değildir:
nint a = 1;
System.IntPtr a = 1;
Derleyici, ve için tam sayı türlerine nint nuint uygun işlemler ve dönüştürmeler sağlar.
Çalışma zamanı yerel tamsayı boyutu
Çalışma zamanında yerel boyutlu tamsayının boyutunu almak için sizeof() kullanabilirsiniz. Ancak, kodun güvenli olmayan bir bağlamda derlenmiş olması gerekir. Örnek:
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
Ayrıca, statik ve özelliklerden eşdeğer değeri IntPtr.Size UIntPtr.Size de eldeebilirsiniz.
MinValue ve MaxValue
Çalışma zamanında yerel boyutlu tamsayıların minimum ve maksimum değerlerini almak için, aşağıdaki örnekte olduğu gibi ve anahtar sözcükleriyle statik özellikler olarak ve MinValue MaxValue nint nuint 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
Sabitler
Sabit değerleri aşağıdaki aralıklarda kullanabilirsiniz:
- için:
nintInt32.MinValue to Int32.MaxValue . - için:
nuintUInt32.MinValue to UInt32.MaxValue .
Dönüşümler
Derleyici, diğer sayısal türlere örtülü ve açık dönüştürmeler sağlar. Daha fazla bilgi için bkz. Yerleşik sayısal dönüştürmeler.
Değişmez Değerler
Yerel boyutlu tamsayı değişmez değerlerinde doğrudan söz dizimi yoktur. Sabit değerin yerel boyutlu bir tamsayı olduğunu belirten bir soneki yoktur, örneğin bir L belirtmek long için . Bunun yerine diğer tamsayı değerlerinin örtülü veya açık dökümlerini kullanabilirsiniz. Örnek:
nint a = 42
nint a = (nint)42;
Desteklenmeyen IntPtr/UIntPtr üyeleri
ve türlerinin aşağıdaki üyeleri ve IntPtr UIntPtr için nint nuint desteklenemleri yoktur:
- Parametreli oluşturucular
- Add(IntPtr, Int32)
- CompareTo
- Size - Bunun yerine sizeof() kullanın.
nint.SizeDesteklenese de, eşdeğer birIntPtr.Sizedeğer almak için kullanabilirsiniz. - Subtract(IntPtr, Int32)
- ToInt32
- ToInt64
- ToPointer
- Zero - Bunun yerine 0 kullanın.
C# dili belirtimi
Daha fazla bilgi için C# 9.0 özellik teklifi notlarının C# dil belirtimi ve Yerel boyutlu tamsayılar bölümüne bakın.