.NET 7 представляет новую функцию, которая позволяет использовать целые числа собственного размера, что упрощает обработку больших значений, не беспокоясь об ошибках переполнения. Эта функция особенно полезна для сценариев, где важна высокая производительность, например, для криптографии и игр.

Целые числа собственного размера реализованы с использованием новых типов nint и nuint. Эти типы зависят от платформы, а это означает, что они будут иметь размер 32 или 64 бита в зависимости от платформы, на которой выполняется код.

Вот пример использования nuint для создания счетчика, который увеличивается на 1 при каждом вызове:

nuint counter = 0;

for (nuint i = 0; i < 100000000; i++)
{
    counter++;
}

Console.WriteLine(counter);

В приведенном выше примере nuint используется для определения переменной counter. Цикл for увеличивает переменную counter на 1 100 миллионов раз. Наконец, значение counter выводится на консоль.

Использование nuint в этом примере гарантирует, что переменная counter не переполнится, даже если она вызывается более 4,2 миллиарда раз на 32-разрядной платформе или более 18 квинтиллионов раз на 64-разрядной платформе.

Вот еще один пример, демонстрирующий, как использовать nint для выполнения вычислений, требующих большого диапазона значений:

nint result = nint.MaxValue / 3;

Console.WriteLine(result);

В этом примере nint используется для определения переменной result. Значение nint.MaxValue представляет максимальное значение, которое может быть сохранено в переменной nint. Разделение этого значения на 3 гарантирует, что результат все еще находится в диапазоне nint. Наконец, значение result выводится на консоль.

Использование nint в этом примере гарантирует, что вычисление не приведет к ошибке переполнения, даже если результат больше, чем максимальное значение, которое может быть сохранено в переменной int.

Таким образом, целые числа собственного размера — это мощная новая функция в .NET 7, упрощающая обработку больших значений, не беспокоясь об ошибках переполнения. Используя типы nint и nuint, вы можете гарантировать, что ваш код будет одновременно высокопроизводительным и надежным.