Типы данных и переменные

Как и во многих языках программирования, в C# есть своя система типов данных, которая используется для создания переменных. Она представлена следующими типами:

  • bool: хранит значениеtrueилиfalse. Представлен системным типомSystem.Boolean

  • byte: хранит целое число от0до255и занимает 1 байт. Представлен системным типомSystem.Byte

  • sbyte: хранит целое число от-128до127и занимает 1 байт. Представлен системным типомSystem.SByte

  • short: хранит целое число от-32768до32767и занимает 2 байта. Представлен системным типомSystem.Int16

  • ushort: хранит целое число от0до65535и занимает 2 байта. Представлен системным типомSystem.UInt16

  • int: хранит целое число от-2147483648до2147483647и занимает 4 байта. Представлен системным типомSystem.Int32

  • uint: хранит целое число от0до4294967295и занимает 4 байта. Представлен системным типомSystem.UInt32

  • long: хранит целое число от–9 223 372 036 854 775 808до9 223 372 036 854 775 807и занимает 8 байт. Представлен системным типомSystem.Int64

  • ulong: хранит целое число от0до18 446 744 073 709 551 615и занимает 8 байт. Представлен системным типомSystem.UInt64

  • float: хранит число с плавающей точкой от-3.4*1038до3.4*1038и занимает 4 байта. Представлен системным типомSystem.Single

  • double: хранит число с плавающей точкой от±5.0*10324до±1.7*10308и занимает 8 байта. Представлен системным типомSystem.Double

  • decimal: хранит десятичное дробное число. Если употребляется без десятичной запятой, имеет значение от 0 до +/–79 228 162 514 264 337 593 543 950 335; если с запятой, то от 0 до +/–7,9228162514264337593543950335 с 28 разрядами после запятой и занимает 16 байт. Представлен системным типомSystem.Decimal

  • char: хранит одиночный символ в кодировке Unicodeи занимает 2 байта. Представлен системным типомSystem.Char

  • string: хранит набор символов Unicode. Представлен системным типомSystem.String

  • object: может хранить значение любого типа данных и занимает 4 байта на 32-разрядной платформе и 8 байт на 64-разрядной платформе. Представлен системным типомSystem.Object, который является базовым для всех других типов и классов .NET.

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

Общий способ объявления переменных следующий:тип_данных название_переменной. Например,int x;. В этом выражении мы объявляем переменную x типаint. То есть x будет хранить некоторое число не больше 4 байт.

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

  • имя должно содержать не более 255 символов

  • имя может содержать любые цифры, буквы и символ подчеркивания, при этом первый символ в имени должен быть буквой или символом подчеркивания

  • в имени не должно быть знаков пунктуации и пробелов

  • имя не может быть ключевым словом языка C#

Объявив переменную, мы можем тут же присвоить ей значение или инициализировать ее. Варианты объявления переменных:

Использование суффиксов

При присвоении значений надо иметь в виду следующую тонкость. При присвоении переменным типа floatи decimalчисел с плавающей точкой, Visual Studio рассматривает все эти числа как значения типаdouble. И чтобы конкретизировать, что данное значение должно рассматриваться какfloat, нам надо использовать суффиксы (fи mсоответственно для floatи decimal):

Использование системных типов

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

Неявная типизация

Ранее мы явным образом указывали тип переменных, например,int x;. И компилятор при запуске уже знал, что x хранит целочисленное значение.

Однако мы можем использовать и модель неявной типизации:

Для неявной типизации вместо названия типа данных используется ключевое словоvar. Затем уже при компиляции компилятор сам выводит тип данных исходя из присвоенного значения. В примере выше использовалось выражениеConsole.WriteLine(c.GetType().ToString());, которое позволяет нам узнать выведенный тип переменной с. Так как по умолчанию все целочисленные значения рассматриваются как значения типаint, то поэтому в итоге переменная c будет иметь типintилиSystemInt32

Эти переменные подобны обычным, однако они имеют некоторые ограничения.

Во-первых, мы не можем сначала объявить неявно типизируемую переменную, а затем инициализировать:

Во-вторых, мы не можем указать в качестве значения неявно типизируемой переменнойnull:

Так как значение null, то компилятор не сможет вывести тип данных.

double или decimal

Из выше перечисленного списка типов данных очевидно, что если мы хотим использовать в программе числа до 256, то для из хранения мы можем использоват переменные типаbyte. При использовании больших значений мы можем взять тип short, int, long. То же самое для дробных чисел - для обычных дробных чисел можно взять тип float, для очень больших дробных чисел - тип double. Тип decimalздесь стоит особняком в том плане, что несмотря на большую разрядность по сравнению с типом double, тип doubleможет хранить большее значение. Однако значение decimalможет содержать до 28-29 знаков после запятой, тогда как значение типа double- 15-16 знаков после запятой.

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

results matching ""

    No results matching ""