Типы данных float и real (transact-sql)float and real (transact-sql)

Характеристики типов с плавающей запятойCharacteristics of the floating-point types

C# поддерживает следующие предварительно определенные типы с плавающей запятой:C# supports the following predefined floating-point types:

Ключевое слово или тип C#C# type/keyword Приблизительный диапазон значенийApproximate range ТочностьPrecision РазмерSize Тип .NET.NET type
От ±1,5 x 10−45 до ±3,4 x 1038±1.5 x 10−45 to ±3.4 x 1038 6–9 цифр~6-9 digits 4 байта4 bytes System.Single
от ±5,0 × 10−324 до ±1,7 × 10308±5.0 × 10−324 to ±1.7 × 10308 15–17 цифр~15-17 digits 8 байт8 bytes System.Double
от ±1,0 x 10-28 до ±7,9228 x 1028±1.0 x 10-28 to ±7.9228 x 1028 28-29 знаков28-29 digits 16 байт16 bytes System.Decimal

В приведенной выше таблице каждый тип ключевого слова C# из крайнего левого столбца является псевдонимом для соответствующего типа .NET.In the preceding table, each C# type keyword from the leftmost column is an alias for the corresponding .NET type. Они взаимозаменяемые.They are interchangeable. Например, следующие объявления объявляют переменные одного типа:For example, the following declarations declare variables of the same type:

По умолчанию все типы с плавающей запятой имеют значение .The default value of each floating-point type is zero, . Все типы с плавающей запятой имеют константы и с минимальным и максимальными итоговыми значениями этого типа.Each of the floating-point types has the and constants that provide the minimum and maximum finite value of that type. Типы и также предоставляют константы, обозначающие бесконечные и нечисловые значения.The and types also provide constants that represent not-a-number and infinity values. Например, тип предоставляет следующие константы: Double.NaN, Double.NegativeInfinity и Double.PositiveInfinity.For example, the type provides the following constants: Double.NaN, Double.NegativeInfinity, and Double.PositiveInfinity.

Так как тип характеризуется более высокой точностью и меньшим диапазоном, чем и , он подходит для финансовых расчетов.Because the type has more precision and a smaller range than both and , it’s appropriate for financial and monetary calculations.

В одном и том же выражении можно сочетать и целочисленные типы, и типы и .You can mix integral types and the and types in an expression. В этом случае целочисленные типы неявно преобразуются в один из типов с плавающей запятой. При необходимости тип неявно преобразуется в .In this case, integral types are implicitly converted to one of the floating-point types and, if necessary, the type is implicitly converted to . Выражение вычисляется следующим образом.The expression is evaluated as follows:

  • Если в выражении есть тип , оно оценивается как или в реляционных сравнениях или сравнениях на равенство.If there is type in the expression, the expression evaluates to , or to in relational and equality comparisons.
  • Если в выражении нет типа , оно оценивается как или в реляционных сравнениях или сравнениях на равенство.If there is no type in the expression, the expression evaluates to , or to in relational and equality comparisons.

Можно также смешивать целочисленные типы и тип в выражении.You can also mix integral types and the type in an expression. В этом случае целочисленные типы неявно преобразуются в тип , а выражение вычисляется как или в реляционных сравнениях и сравнениях на равенство.In this case, integral types are implicitly converted to the type and the expression evaluates to , or to in relational and equality comparisons.

Тип нельзя смешивать с типами и в выражении.You cannot mix the type with the and types in an expression. В этом случае, если требуется выполнить арифметические операции или операции сравнения или равенства, необходимо явно преобразовать операнды из типа или в тип , как показано в следующем примере:In this case, if you want to perform arithmetic, comparison, or equality operations, you must explicitly convert the operands either from or to the type, as the following example shows:

Можно использовать строки стандартных числовых форматов или строки пользовательских числовых форматов для форматирования значения с плавающей запятой.You can use either standard numeric format strings or custom numeric format strings to format a floating-point value.

Определение целочисленных переменных

Определение происходит следующим образом:

char c;
short int si; // допустимо
short s; // предпочтительнее
int i;
long int li; // допустимо
long l; // предпочтительнее
long long int lli; // допустимо
long long ll; // предпочтительнее

1
2
3
4
5
6
7
8

charc;

shortintsi;// допустимо

shorts;// предпочтительнее

inti;

longintli;// допустимо

longl;// предпочтительнее

longlongintlli;// допустимо

longlongll;// предпочтительнее

В то время как полные названия ,  и могут использоваться, их сокращенные версии (без ) более предпочтительны для использования. К тому же постоянное добавление затрудняет чтение кода (легко перепутать с именем переменной).

Работа с десятичными типамиWork with decimal types

Вы уже ознакомились с базовыми числовыми типами в C# — целыми числами и числами типа double.You’ve seen the basic numeric types in C#: integers and doubles. Осталось изучить еще один тип: .There’s one other type to learn: the type. Тип имеет меньший диапазон, но большую точность, чем .The type has a smaller range but greater precision than . Например:Let’s take a look:

Обратите внимание, что диапазон меньше, чем для типа .Notice that the range is smaller than the type. Вы можете убедиться в повышении точности при использовании типа decimal, выполнив следующий код:You can see the greater precision with the decimal type by trying the following code:. Суффикс возле чисел указывает, что для константы должен использоваться тип .The suffix on the numbers is how you indicate that a constant should use the type

В противном случае компилятор предполагает тип .Otherwise, the compiler assumes the type

Суффикс возле чисел указывает, что для константы должен использоваться тип .The suffix on the numbers is how you indicate that a constant should use the type. В противном случае компилятор предполагает тип .Otherwise, the compiler assumes the type.

Примечание

Буква была выбрана потому, что визуально показывает различия между ключевыми словами и .The letter was chosen as the most visually distinct letter between the and keywords.

Обратите внимание, что при вычислении с использованием типа decimal справа от запятой содержится больше цифр.Notice that the math using the decimal type has more digits to the right of the decimal point. ЗадачаChallenge

ЗадачаChallenge

Теперь, когда вы ознакомились с разными числовыми типами, напишите код, который позволяет вычислить площадь круга с радиусом 2,50 см.Now that you’ve seen the different numeric types, write code that calculates the area of a circle whose radius is 2.50 centimeters. Помните, что площадь круга равна квадрату радиуса, умноженному на число пи.Remember that the area of a circle is the radius squared multiplied by PI. Подсказка: в .NET есть константа пи Math.PI, которую можно использовать.One hint: .NET contains a constant for PI, Math.PI that you can use for that value. Math.PI, как и все константы, объявленные в пространстве имен , — это значение .Math.PI, like all constants declared in the namespace, is a value. По этой причине вместо значений для этой задачи следует использовать .For that reason, you should use instead of values for this challenge.

Вы должны получить ответ от 19 до 20.You should get an answer between 19 and 20.
Ответ можно .You can check your answer by .

При желании поэкспериментируйте с другими формулами.Try some other formulas if you’d like.

Вы выполнили все задачи краткого руководства по числам в C#.You’ve completed the «Numbers in C#» quickstart. Теперь вы можете выполнить руководство по ветвям и циклам в своей среде разработки.You can continue with the Branches and loops quickstart in your own development environment.

Дополнительные сведения о числах в C# см. в следующих статьях:You can learn more about numbers in C# in the following articles:

Оператор default

Оператор default создает значение по умолчанию для указанного типа, используется оно следующим образом: default(T), где T – это тип, для которого нужно создать соответствующее значение.

Объявим переменную типа int и присвоим ей значение по умолчанию с помощью new

int n3 = new int();

Console.WriteLine($"Default int value: {n3}");

Тоже самое можно сделать с помощью оператора default

int n4 = default(int);

Console.WriteLine($"Value of int that inited by default(T): {n4}");

Если C# может самостоятельно вывести тип, то можно воспользоваться не оператором, а литерой default, без явного указания типа:

int n5 = default;

Console.WriteLine($"Value of int that inited by default: {n5}");

Данный оператор полезен при разработке методов с обобщенным типом. Создадим метод, который выводит на консоль значение по умолчанию для типа переданного в нее аргумента:

static void PrintDefaultValue<T>(T val)
{
    Console.WriteLine($"Type of val: {val.GetType()}, default value: {default(T)}, current value: {val}");

}

Вызовем эту  функцию:

static void Main(string[] args)
{
    PrintDefaultValue<int>(5);
    PrintDefaultValue<bool>(true);
}

Исходный код примеров из этой статьи можете скачать из нашего github-репозитория.

Introduction to C float types

C provides various floating-point types that represent non-integer number with a decimal point at any position. For example, with integer types, you only can have numbers  , , … however with floating-point type, you can have , , and so on.

There are three standard floating-point types in C:

  • : for numbers with single precision.
  • : for numbers with double precision.
  • : for numbers with extended precision.

The following table illustrates the technical attributes of various floating-point types in C. It is important to notice that this is only the minimal requirement for storage size defined by C.

Type Size Ranges Smallest Positive Value Precision
float 4 bytes ±3.4E+38 1.2E-38 6 digits
double 8 bytes ±1.7E+308 2.3E-308 15 digits
long double 10 bytes ±1.1E+4932 3.4E-4932 19 digits

Вычисления с целыми числамиExplore integer math

Создайте каталог с именем numbers-quickstart.Create a directory named numbers-quickstart. Сделайте его текущим, выполнив следующую команду:Make that the current directory and run the following command:

Откройте файл Program.cs в любом редакторе и замените строку следующим кодом:Open Program.cs in your favorite editor, and replace the line with the following code:

Чтобы выполнить этот код, введите в окно командной строки.Run this code by typing in your command window.

Вы увидели одну из основных математических операций с целыми числами.You’ve seen one of the fundamental math operations with integers. Тип представляет целое положительное или отрицательное число или ноль.The type represents an integer, a zero, positive, or negative whole number. Для сложения используйте символ .You use the symbol for addition. Другие стандартные математические операции с целыми числами включают:Other common mathematical operations for integers include:

  •  — вычитание; for subtraction
  •  — умножение; for multiplication
  •  — деление. for division

Начните с ознакомления с различными операциями.Start by exploring those different operations. Добавьте следующие строки после строки, с помощью которой записывается значение :Add these lines after the line that writes the value of :

Чтобы выполнить этот код, введите в окно командной строки.Run this code by typing in your command window.

Можно также поэкспериментировать, написав несколько математических операций в одной строке.You can also experiment by writing multiple mathematics operations in the same line, if you’d like. Например, выполните .Try for example. Допускается сочетание переменных и постоянных чисел.Mixing variables and constant numbers is allowed.

Совет

Вероятнее всего, при изучении C# (как и любого другого языка программирования) вы будете допускать ошибки в коде.As you explore C# (or any programming language), you’ll make mistakes when you write code. Компилятор найдет эти ошибки и сообщит вам о них.The compiler will find those errors and report them to you. Если результат содержит сообщения об ошибках, внимательно просмотрите пример кода и код в окне, чтобы понять, что нужно исправить.When the output contains error messages, look closely at the example code and the code in your window to see what to fix.
Это упражнение поможет вам изучить структуру кода C#.That exercise will help you learn the structure of C# code.

Вы завершили первый этап.You’ve finished the first step. Прежде чем перейти к следующему разделу, переместим текущий код в отдельный метод.Before you start the next section, let’s move the current code into a separate method. Это упростит начало работы с новым примером.That makes it easier to start working with a new example. Переименуйте метод в и запишите новый метод , который вызывает .Rename your method to and write a new method that calls . В результате ваш код должен выглядеть примерно следующим образом:When you finish, your code should look like this:

Переполнение

Вопрос: «Что произойдет, если мы попытаемся использовать значение, которое находится вне диапазона значений определенного типа данных?». Ответ: «Переполнение».

Переполнение (англ. «overflow») случается при потере бит из-за того, что переменной не было выделено достаточно памяти для их хранения.

На уроке №28 мы говорили о том, что данные хранятся в бинарном (двоичном) формате и каждый бит может иметь только 2 возможных значения ( или ). Вот как выглядит диапазон чисел от 0 до 15 в десятичной и двоичной системах:

Десятичная система Двоичная система
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111

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

Типы с плавающей точкой

Числа с плавающей точкой (иногда их называют действительными числами) применяются при вычислении выражений, в которых требуется точность до десятичного знака. Например, это может быть вычисление квадратного корня, значений синуса, косинуса и т.п. Существует два типа с плавающей точкой: float и double, которые представляют числа одинарной и двойной точности.

Слово «плавающая» означает, что десятичная точка может располагаться в любом месте (она «плавает»). Вот коты плавать не особенно любят, поэтому они не float и не double.

Тип float

Тип float определяет значение одинарной точности, которое занимает 32 бит. Переменные данного типа удобны, когда требуется дробная часть без особой точности, например, для денежных сумм.

Рекомендуется добавлять символ F или f для обозначения этого типа, иначе число будет считаться типом double.

Конвертируем из строки.

Класс Float является оболочкой для данного типа. Без необходимости не используйте в Android класс Float.

Также есть специальный класс BigDecimal для проведения арифметических действий повышенной точности (финансовые расчёты).

Тип double

Тип double обеспечивает двойную точность, что видно из его названия (double — двойная). Занимает 64 бит для хранения значений. Многие математические функции возвращают значения типа double. Кстати, современные процессоры оптимизированы под вычисления значений двойной точности, поэтому они предпочтительнее, чем тип float.

Тип double содержит не только числа, но и слова. Сейчас вам докажу. Разделим число типа double на ноль. Ошибки не произойдёт.

Пример вернёт значение Infinity (Бесконечность). Если разделить отрицательное число на ноль, то вернётся -Infinity.

А что произойдёт, если сложить две бесконечности? Если рассуждать логически, то сломается интернет, наступит конец света или можно вызвать Волдеморта. Я долго не решался, но потом набрался храбрости и попробовал.

Вернулось ещё одно слово — NaN. Что это вообще? Может должно вернуться Nyan — ну вы знаете, это странный котик, который летит бесконечно в космосе, оставляя за собой шлейф из радуги.

Умножать две бесконечности я побоялся. И вам не советую.

Класс Double является оболочкой для данного типа. Без необходимости не используйте в Android класс Double.

Конвертация double в строку

При работе с числами double следует держать ухо востро. Рассмотрим пример конвертации трёх чисел.

Первые два числа нормально преобразовались, а вот третье число преобразовалось в строку в странном виде (на самом деле это научное представление числа). И это может источником проблемы при передаче строки куда-нибудь, например, на сервер. Если сервер не ожидает от вас такой подлости, то будет генерировать ошибки из-за странной записи. Нужно найти другие способы конвертации.

Первый способ — используем String.format().

Последний пример самый подходящий для нас, но вам нужно знать, сколько знаков идёт после десятичной точки. Остальные два пригодятся, если число можно округлить.

Второй способ — метод Double.toString(). У меня метод превратил число в «непонятную» строку. А у некоторых этот пример возвращал строку в нормальном виде. Не заслуживает доверия.

Третий способ — добавить пустую строку. В Android не помогло, хотя тоже утверждается, что у кого-то выводится в нормальном виде. Врут, наверное.

Четвёртый экзотический способ, которым редко пользуются — DecimalFormat.

СинтаксисSyntax

float Где n — это количество битов, используемых для хранения мантиссы числа в формате float при экспоненциальном представлении. Определяет точность данных и размер для хранения.float Where n is the number of bits that are used to store the mantissa of the float number in scientific notation and, therefore, dictates the precision and storage size. Если указан параметр n, это должно быть значение в диапазоне от 1 до 53.If n is specified, it must be a value between 1 and 53. Значение n по умолчанию — 53.The default value of n is 53.

Значение nn value ТочностьPrecision Объем памятиStorage size
1-241-24 7 цифр7 digits 4 байта4 bytes
25-5325-53 15 знаков15 digits 8 байт8 bytes

Примечание

В приложении SQL ServerSQL Server параметр n может принимать одно из двух возможных значений.SQL ServerSQL Server treats n as one of two possible values. Если 1<=n<=24, n принимает значение 24.If 1<=n<=24, n is treated as 24. Если 25<=n<=53, n принимает значение 53.If 25<=n<=53, n is treated as 53.

Тип данных SQL ServerSQL Server float соответствует стандарту ISO для всех значений n в диапазоне от 1 до 53.The SQL ServerSQL Server float data type complies with the ISO standard for all values of n from 1 through 53. Синонимом типа double precision является тип float(53) .The synonym for double precision is float(53).

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье .To view Transact-SQL syntax for SQL Server 2014 and earlier, see .

Полиморфизм

полиморфизмом

В итоге

  • выделяйте главные характеристики объекта;
  • выделяйте общие свойства и поведение и используйте наследование при создании объектов;
  • используйте абстрактные типы для описания объектов;
  • старайтесь всегда скрывать методы и поля, относящиеся к внутренней реализации класса.

Работа с типом doubleWork with the double type

Числовой тип представляет число с плавающей запятой двойной точности.The numeric type represents a double-precision floating point number. Эти термины могут быть новыми для вас.Those terms may be new to you. Число с плавающей запятой можно использовать для представления нецелых чисел, которые могут быть очень большими или малыми.A floating point number is useful to represent non-integral numbers that may be very large or small in magnitude. Число двойной точности — это относительный термин, описывающий количество двоичных разрядов, используемых для хранения значения.Double-precision is a relative term that describes the number of binary digits used to store the value. Числа двойной точности имеют в два раза больше двоичных символов по сравнению с числами одиночной точности.Double precision numbers have twice the number of binary digits as single-precision. На современных компьютерах числа двойной точности используются чаще, чем одиночной.On modern computers, it’s more common to use double precision than single precision numbers. Числа одиночной точности объявляются с помощью ключевого слова .Single precision numbers are declared using the keyword.
Рассмотрим их.Let’s explore. Добавьте следующий код и просмотрите результат:Add the following code and see the result:

Обратите внимание, что ответ включает десятичную долю частного.Notice that the answer includes the decimal portion of the quotient. Попробуйте более сложное выражение с типом double:Try a slightly more complicated expression with doubles:. Диапазон значений типа double гораздо больше, чем диапазон значений целых чисел.The range of a double value is much greater than integer values

Добавьте следующий фрагмент после написанного кода:Try the following code below what you’ve written so far:

Диапазон значений типа double гораздо больше, чем диапазон значений целых чисел.The range of a double value is much greater than integer values. Добавьте следующий фрагмент после написанного кода:Try the following code below what you’ve written so far:

Значения выводятся в экспоненциальном представлении.These values are printed out in scientific notation. Число слева от символа является значащим.The number to the left of the is the significand. Число справа — это показатель степени, который равен 10.The number to the right is the exponent, as a power of 10.

Так же, как десятичные числа в математике, значения double в C# могут содержать ошибки округления.Just like decimal numbers in math, doubles in C# can have rounding errors. Выполните этот код:Try this code:

Вы знаете, что периодическая десятичная дробь не равняется .You know that repeating isn’t exactly the same as .

ЗадачаChallenge

Выполните другие вычисления с большими числами, малыми числами, умножением и делением с помощью типа .Try other calculations with large numbers, small numbers, multiplication, and division using the type. Попробуйте выполнить более сложные вычисления.Try more complicated calculations.

После того как вы решите сложную задачу, поместите написанный код в новый метод.After you’ve spent some time with the challenge, take the code you’ve written and place it in a new method. Присвойте этому методу имя .Name that new method .

3 Присваивание целых и вещественных чисел

Было бы плохо, если бы целые числа можно было присваивать только переменным типа , а вещественные — только переменным типа . Хотелось бы иметь возможность преобразовывать одни числа в другие. И в Java такая возможность есть.

Во-первых, переменным типа можно присваивать как вещественные, так и целые числа. При присваивании целых чисел они просто преобразовываются в вещественные. Хотя иногда при этом возможна небольшая потеря точности.

Команда Примечание
В переменной хранится значение
В переменной хранится значение
В переменной хранится значение

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

Команда Примечание
В переменной хранится значение
На экран будет выведено число
На экран будет выведено число

И наконец, есть возможность присваивать переменным типа вещественные числа. Дробная часть числа при этом отбрасывается — число округляется вниз до целого.

Также компилятор требует, чтобы этот факт программист задокументировал явно (чтобы другие программисты понимали, что тут происходит отбрасывание дробной части). Общий вид этого выражения в коде такой:

Присваивание переменной типа вещественного числа

Примеры:

Команда Примечание
В переменной хранится значение
В переменной хранится значение
В переменной хранится значение

Целочисленные литералыInteger literals

Целочисленные литералы могут быть:Integer literals can be

  • десятичным числом: без префикса;decimal: without any prefix
  • шестнадцатеричным числом: с префиксом или ;hexadecimal: with the or prefix
  • двоичными: с префиксом или (доступно в C# 7.0 и более поздних версиях).binary: with the or prefix (available in C# 7.0 and later)

В приведенном ниже коде показан пример каждого из них.The following code demonstrates an example of each:

В предыдущем примере также показано использование в качестве цифрового разделителя, который поддерживается, начиная с версии C# 7.0.The preceding example also shows the use of as a digit separator, which is supported starting with C# 7.0. Цифровой разделитель можно использовать со всеми видами числовых литералов.You can use the digit separator with all kinds of numeric literals.

Тип целочисленного литерала определяется его суффиксом следующим образом:The type of an integer literal is determined by its suffix as follows:

  • Если литерал не имеет суффикса, его типом будет первый из следующих типов, в котором может быть представлено его значение: , , , .If the literal has no suffix, its type is the first of the following types in which its value can be represented: , , , .

  • Если у литерала есть суффикс или , его типом будет первый из следующих типов, в котором может быть представлено его значение: , .If the literal is suffixed by or , its type is the first of the following types in which its value can be represented: , .

  • Если у литерала есть суффикс или , его типом будет первый из следующих типов, в котором может быть представлено его значение: , .If the literal is suffixed by or , its type is the first of the following types in which its value can be represented: , .

    Примечание

    Строчную букву можно использовать в качестве суффикса.You can use the lowercase letter as a suffix. Однако при этом выдается предупреждение компилятора, так как букву можно перепутать с цифрой .However, this generates a compiler warning because the letter can be confused with the digit . Для ясности используйте .Use for clarity.

  • Если у литерала есть суффикс , , , , , , или , его тип — .If the literal is suffixed by , , , , , , , or , its type is .

Если значение, представленное целочисленным литералом, превышает UInt64.MaxValue, происходит ошибка компиляции CS1021.If the value represented by an integer literal exceeds UInt64.MaxValue, a compiler error CS1021 occurs.

Если определенный тип целочисленного литерала — , а значение, представленное литералом, находится в диапазоне целевого типа, значение можно неявно преобразовать в , , , , или :If the determined type of an integer literal is and the value represented by the literal is within the range of the destination type, the value can be implicitly converted to , , , , , or :

Как показано в предыдущем примере, если значение литерала выходит за пределы диапазона целевого типа, возникает ошибка компилятора CS0031.As the preceding example shows, if the literal’s value is not within the range of the destination type, a compiler error CS0031 occurs.

Можно также использовать приведение для преобразования значения, представленного целочисленным литералом, в тип, отличный от определенного типа литерала:You can also use a cast to convert the value represented by an integer literal to the type other than the determined type of the literal:

Объявление и инициализация переменных

В общем случае при объявлении переменной в C#, вначале указывается тип данных переменной, затем ее имя:

int nVal;
string strVal;

Задание значения переменной можно произвести в момент инициализации:

int radius = 10;
string name = "John";

либо после инициализаций:

string name;
name = "John";

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

int notInitedVal;
Console.Write(notInitedVal);

В примерах мы не будем приводить код импорта и объявления класса. В конце главы будет приведен листинг программы со всеми примерами из данного урока.

Ключевое слово new

Ключевое слово new, как правило, используется при инициализации переменных, которые имеют ссылочный тип данных. О том, что это такое мы расскажем чуть ниже. Пусть у нас есть класс Rectangle

class Rectangle
{
    public double Width = 0;
    public double Height = 0;
}

Данный класс нам нужен только для демонстрации, при разработке собственных классов не стоит создать поля с ключевым словом public. О создании классов и основах объектно-ориентированного программирования будет рассказано в одном из ближайших уроков.

Создадим переменную класса Rectangle

Rectangle rect = new Rectangle();
Console.WriteLine($"Rectangle Width={rect.Width}, Height={rect.Height}");

Переменные типа int, double и т.п. также можно проинициализировать с помощью ключевого слова new, в этом случае будет присвоено значение по умолчанию:

int newInitedValue = new int();
Console.WriteLine("Default int value: " + newInitedValue);

Ключевое слово var. Неявная типизация

При объявлении переменной вместо явного задания типа можно поставить ключевое слово var. В этом случае будет использована система вывода типов для определения типа переменной по ее значению.

int v1 = 12345;
var v2 = 12345;

Console.WriteLine($"Type of v1: {v1.GetType()}\nType of v2: {v2.GetType()}");

При работе с var необходимо помнить следующее:

  • использовать var можно только для объявления локальных переменных;
  • var нельзя использоваться для объявления типа возвращаемого значения, типов полей и параметров;
  • при объявлении переменной с использованием var она обязательно должна быть проинициализирована, при этом использовать для этого null запрещено;
  • объявлять переменную допускающую null-значение с использованием лексемы ? через var нельзя.
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector