nint``nuinta – typy (Referenční příručka jazyka C#)

Počínaje jazykem C# 9.0 můžete pomocí klíčových slov a definovat celočíselná čísla nint nuint nativní velikosti. Jedná se o 32bitová celá čísla při spuštění v 32bitovém procesu nebo 64bitová celá čísla při spuštění v 64bitovém procesu. Lze je použít ve scénářích spolupráce, knihovnách nízké úrovně a k optimalizaci výkonu ve scénářích, kde se celočíselná matematika používá ve velké části.

Celočíselné typy nativní velikosti jsou interně reprezentovány jako typy .NET a System.IntPtr System.UIntPtr . Na rozdíl od jiných číselných typů nejsou klíčová slova jednoduše aliasy pro typy. Následující příkazy nejsou ekvivalentní:

nint a = 1;
System.IntPtr a = 1;

Kompilátor poskytuje operace a převody pro a nint , které jsou vhodné pro nuint celočíselné typy.

Nativní celočíselná velikost za běhu

K získání velikosti celého čísla nativní velikosti za běhu můžete použít sizeof() . Kód však musí být zkompilován v nezabezpečeném kontextu. Například:

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

Ekvivalentní hodnotu můžete získat také ze statických IntPtr.Size vlastností UIntPtr.Size a .

MinValue a MaxValue

Pokud chcete získat minimální a maximální hodnoty celých čísel nativní velikosti za běhu, použijte a jako statické vlastnosti s klíčovými slovy a jako v MinValue MaxValue následujícím nint nuint příkladu:

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

Konstanty

Konstantní hodnoty můžete použít v následujících rozsahech:

Převody

Kompilátor poskytuje implicitní a explicitní převody na jiné číselné typy. Další informace najdete v tématu Předdefinování číselných převodů.

Literály

Pro celočíselné literály nativní velikosti neexistuje žádná přímá syntaxe. Neexistuje žádná přípona k označení, že literál je celé číslo nativní velikosti, například k L označení long . Místo toho můžete použít implicitní nebo explicitní přetypování jiných celočíselných hodnot. Například:

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

Nepodporované členy IntPtr/UIntPtr

Následující členy a IntPtr nejsou podporovány pro typy a UIntPtr nint nuint :

specifikace jazyka C#

Další informace najdete ve specifikaci jazyka C# a v části Celočíselná čísla v nativní velikosti v poznámkách k návrhu funkce C# 9.0.

Viz také