Преобразования типов в C#

Что такое конверсии в C#?

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

1. var1 имеет тип short, 16-разрядное целое число со знаком, которое инициализировано на 5. var2 имеет тип sbyte, 8-разрядное целое число со знаком, которое инициализируется значением 10.

2. Затем значение var1 присваивается var2. Так как это два разных типа, значение var1 должно быть преобразовано в значение того же типа, что и var2, прежде чем выполнить назначение.

3. Если вы посмотрите на результат, значение var1 не изменится, а var2 будет иметь такое же значение, как var1.

Различные типы конверсий в C#

Мы обсудим различные типы конверсий в C#.

  1. Неявное преобразование
  2. Явное преобразование
  3. Пользовательское преобразование

Неявное преобразование:

  • Компилятор автоматически выполняет эти преобразования
  • При преобразовании из меньшего типа данных в более крупный тип, дополнительные наиболее значимые биты цели заполняются 0.
  • Никакие данные не будут потеряны в Implicit Conversion

Пример:

Вывод:

5
5

Явное преобразование:

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

Пример:

Вывод:

5
5

В приведенном выше примере, когда мы попытаемся преобразовать double в int, нам нужно явно использовать, используя int else, мы получим ошибку.

Пользовательское преобразование:

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

Пример:

Ограничения по пользовательскому преобразованию:

  • Вы можете определять только определенные пользователем преобразования для классов и структур.
  • Вы не можете переопределять стандартные неявные или явные преобразования.
  • Для типа источника S и целевого типа T справедливы следующие значения:
    - S и T должны быть разных типов.
    - S и T не могут быть связаны наследованием. То есть S не может быть выведено из T, а T не может быть выведено из S.
    - Ни S, ни T не могут быть интерфейсом или объектом типа.
    - Оператор преобразования должен быть членом либо S, либо T.
  • Вы не можете объявить две конверсии, одну неявную и другую явную, с одинаковыми исходными и целевыми типами.

Источник: http://www.csharpstar.com/type-conversion-csharp/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

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