Добавить в корзинуПозвонить
Найти в Дзене

Типы данных в C#

Типы данных в C# делятся на две большие категории: Переменная такого типа непосредственно содержит свои данные, а не хранит ссылку на них. Определены девять целочисленных типов: sbyte, byte, short, ushort, int, uint, long, ulong, char. Остальные float, double, decimal из них предназначены для числовых расчётов. Bool это тоже значимый тип данных. Основные характеристики целочисленных типов значений: Данные хранятся непосредственно в переменной. Память для таких типов обычно выделяется в стеке. При копировании переменной типа значения создаётся копия данных, и изменения в одной переменной не влияют на другую. Ссылочные типы (reference types) хранят ссылку на объект в памяти, а не сами данные. К ссылочным типам в C# относятся, например, классы, интерфейсы, массивы и делегаты. csharp Переменные, объявленные с const, определяются и вычисляются на этапе компиляции программы, до её выполнения. После инициализации значение константы нельзя изменить. Константы могут быть только для определённ
Оглавление

Типы данных в C# делятся на две большие категории:

Значимые (value types) и ссылочные (reference types).

Значимые

Переменная такого типа непосредственно содержит свои данные, а не хранит ссылку на них.

Определены девять целочисленных типов: sbyte, byte, short, ushort, int, uint, long, ulong, char.

Остальные float, double, decimal из них предназначены для числовых расчётов.

Bool это тоже значимый тип данных.

Основные характеристики целочисленных типов значений:

Данные хранятся непосредственно в переменной.

Память для таких типов обычно выделяется в стеке.

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

1. Целочисленные типы

-2

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

-3

3. Символьный и логический типы

-4

4. Ссылочные типы

Ссылочные типы (reference types) хранят ссылку на объект в памяти, а не сами данные. К ссылочным типам в C# относятся, например, классы, интерфейсы, массивы и делегаты.

-5

Переменные

Объявление и инициализация

csharp

-6

Правила именования переменных

  • Начинаются с буквы, _ или @
  • Содержат буквы, цифры, _
  • Чувствительны к регистру (myVar ≠ myvar)
  • Не совпадают с ключевыми словами (используйте @ для обхода: @class)
-7

Константы

Переменные, объявленные с const, определяются и вычисляются на этапе компиляции программы, до её выполнения. После инициализации значение константы нельзя изменить.

Константы могут быть только для определённых типов данных: byte, char, short, int, long, float, double, decimal, bool, string, перечислимые типы или ссылочные типы.

Константы времени компиляции (const)

-8

Только для чтения (readonly)

Ключевое слово readonly в объявлении поля означает, что значение поля можно присвоить только в момент объявления или в конструкторе того же класса.

В определении структуры (readonly struct). Указывает, что структура неизменяема.

Свойства только для чтения. Если свойство имеет только блок get, оно доступно только для чтения — можно получить его значение, но нельзя установить.

-9

Сравнение

Const — константа времени компиляции, её значение задаётся при объявлении и не может быть изменено.

readonly — константа времени выполнения, её значение можно вычислить во время выполнения и присвоить в объявлении поля или конструкторе.

const vs readonly

-10

Примеры использования

-11

Nullable типы (значимые типы)

Существуют два основных типа, связанных с понятием nullable: типы значений, допускающие значение NULL, и ссылочные типы, допускающие значение NULL.

Типы значений, допускающие значение NULL

Это типы-значения (например,int,bool), которые могут принимать значениеnull
в дополнение к обычным значениям базового типа. Синтаксис для объявления — T?, гдеT — базовый тип. Это сокращённая форма для структуры System.Nullable<T>
Базовый тип
T не может быть типом, допускающим значение NULL, или ссылочным типом.

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

HasValue — возвращает true, если переменная содержит значение, false — если равна null.
Value — возвращает значение, если оно есть, иначе генерирует исключение.

Значение по умолчанию для типа, допускающего значение NULL, — null.

Можно использовать метод GetValueOrDefault(), чтобы получить значение, если оно не равно null, или значение по умолчанию.

-12

Рекомендации

  1. Для целых чисел используйте int (если не нужен особый диапазон)
  2. Для дробных чисел используйте double (если не нужна высокая точность) или decimal (финансы)
  3. Для строк всегда используйте string
  4. Для логики используйте bool
  5. Для локальных переменных используйте var, когда тип очевиден
  6. Константы используйте для действительно неизменяемых значений (число Пи, дни недели)
  7. Readonly для значений, известных во время выполнения, но неизменяемых после инициализации