Обучение
Модуль
Выбор правильного типа данных в коде на C# - Training
Выберите правильный тип данных для кода из нескольких основных типов, используемых в C#.
Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
В .NET предоставляется диапазон целочисленных примитивов и примитивов с плавающей запятой, а также следующие типы.
.NET поддерживает как подписанные, так и неподписанные 8-разрядные, 16-разрядные, 32-разрядные, 64-разрядные и 128-разрядные целые типы, перечисленные в следующих таблицах.
Типы целых чисел со знаком
Тип | Размер (в байтах) | Минимальное значение | Максимальное значение |
---|---|---|---|
System.Int16 | 2 | –32 768 | 32 767 |
System.Int32 | 4 | –2 147 483 648 | 2,147,483,647 |
System.Int64 | 8 | –9 223 372 036 854 775 808 | 9 223 372 036 854 775 807 |
System.Int128 | 16 | –170 141 183 460 469 231 731 687 303 715 884 105 728 | 170,141,183,460,469,231,731,687,303,715,884,105,727 |
System.SByte | 1 | –128 | 127 |
System.IntPtr (в 32-разрядном процессе) | 4 | –2 147 483 648 | 2,147,483,647 |
System.IntPtr (в 64-разрядном процессе) | 8 | –9 223 372 036 854 775 808 | 9 223 372 036 854 775 807 |
Типы целых чисел без знака
Тип | Размер (в байтах) | Минимальное значение | Максимальное значение |
---|---|---|---|
System.Byte | 1 | 0 | 255 |
System.UInt16 | 2 | 0 | 65 535 |
System.UInt32 | 4 | 0 | 4 294 967 295 |
System.UInt64 | 8 | 0 | 18 446 744 073 709 551 615 |
System.UInt128 | 16 | 0 | 340,282,366,920,938,463,463,374,607,431,768,211,455 |
System.UIntPtr (в 32-разрядном процессе) | 4 | 0 | 4 294 967 295 |
System.UIntPtr (в 64-разрядном процессе) | 8 | 0 | 18 446 744 073 709 551 615 |
Каждый целочисленный тип поддерживает набор стандартных арифметических операторов. Класс System.Math предоставляет методы для широкого набора математических функций.
Вы также можете работать с отдельными битами целочисленного значения с помощью класса System.BitConverter.
Примечание
Целочисленные типы без знака не совместимы с CLS. Дополнительные сведения см. в разделе Независимость от языка и независимые от языка компоненты.
Структура System.Numerics.BigInteger является неизменяемым типом, который представляет произвольно большое целое число. Для него в теории не существует верхней или нижней границы. Методы типа BigInteger во многом повторяют методы других целочисленных типов.
.NET включает следующие типы с плавающей запятой:
Тип | Размер (в байтах) | Приблизительный диапазон значений | Примитивные? | Примечания. |
---|---|---|---|---|
System.Half | 2 | ±65 504 | No | Впервые появился в .NET 5 |
System.Single | 4 | ±3,4 x 1038 | Да | |
System.Double | 8 | ±1,7 × 10308 | Да | |
System.Decimal | 16 | ±7,9228 x 1028 | No |
Типы Half, Single и Double поддерживают специальные значения, обозначающие бесконечность и нечисловое значение. Например, тип Double предоставляет следующие значения: Double.NaN, Double.NegativeInfinity и Double.PositiveInfinity. Для проверки на эти значения применяются методы Double.IsNaN, Double.IsInfinity, Double.IsPositiveInfinity и Double.IsNegativeInfinity.
Каждый тип с плавающей запятой поддерживает набор стандартных арифметических операторов. Класс System.Math предоставляет методы для широкого набора математических функций. .NET Core 2.0 и более поздних версий содержит класс System.MathF, методы которого принимают аргументы с типом Single.
Вы также можете работать с отдельными битами значений типа Double, Single и Half с помощью класса System.BitConverter. Структура System.Decimal имеет собственные методы, Decimal.GetBits и Decimal(Int32[]), для работы с отдельными битами десятичного значения, а также собственный набор методов для выполнения некоторых дополнительных математических операций.
Типы Double, Single и Half предназначены для значений, которые по своему характеру являются неточными (например, расстояние между двумя звездами), и для случаев, когда не требуются высокая степень точности и малая погрешность округления. Тип System.Decimal используется в случаях, когда требуется большая точность и минимальная погрешность округления.
Примечание
Тип Decimal не устраняет потребность в округлении. Но он сводит к минимуму ошибки, возникающие из-за округления.
Структура System.Numerics.Complex представляет комплексное число, то есть число, имеющее вещественную и мнимую части. Она поддерживает стандартный набор арифметических операторов, операторов сравнения, равенства, явного и неявного преобразования, а также математические, алгебраические и тригонометрические методы.
Пространство имен System.Numerics содержит набор типов .NET с поддержкой SIMD. Операции SIMD (Single Instruction Multiple Data) допускают параллельное выполнение на аппаратном уровне. Эта возможность повышает производительность векторизированных вычислений, которые широко применяются в математических, научных и графических приложениях.
Ниже перечислены типы .NET с поддержкой SIMD:
Типы Vector2, Vector3 и Vector4, которые представляют векторы с 2, 3 и 4 значениями Single.
Два матричных типа: Matrix3x2 для представления матрицы 3×2 и Matrix4x4 для представления матрицы 4×4.
Тип Plane, который представляет плоскость в трехмерном пространстве.
Тип Quaternion, который представляет вектор, используемый для кодирования трехмерных физических вращений.
Тип Vector<T>, который представляет вектор указанного числового типа и реализует широкий набор операторов, оптимизированных для поддержки SIMD. Vector<T> имеет фиксированное число экземпляров, но его значение Vector<T>.Count зависит от характеристик ЦП на компьютере, на котором выполняется код.
Примечание
Тип Vector<T> входит в состав .NET Core и .NET 5 и более поздних версий, но не .NET Framework. Чтобы получить доступ к этому типу при использовании .NET Framework, необходимо установить пакет NuGet System.Numerics.Vectors.
Типы с поддержкой SIMD реализованы так, что их можно использовать на оборудовании и (или) с JIT-компиляторами, которые не поддерживают SIMD. Чтобы получить преимущество от использования инструкций SIMD, необходимо запустить 64-разрядное приложение в среде выполнения с компилятором RyuJIT. Он входит в состав .NET Core и .NET Framework 4.6 и более поздних версий. Он добавляет поддержку SIMD при нацеливании на 64-разрядные процессоры.
Дополнительные сведения см. в разделе Использование числовых типов с ускорением SIMD.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Обучение
Модуль
Выбор правильного типа данных в коде на C# - Training
Выберите правильный тип данных для кода из нескольких основных типов, используемых в C#.
Документация
Сведения о диапазоне значений, размере занимаемой памяти и способах использования каждого из целочисленных типов.
Числовые типы с плавающей запятой - C# reference
Дополнительные сведения о встроенных типах C# с плавающей запятой: float, double и decimal
Проверенные и снятые инструкции — проверка переполнения - C# reference
Управление контекстом проверки переполнения. В проверяемом контексте переполнение приводит к возникновению исключения. В незавершенном контексте результат усечен.