Толик Панков
hex_laden
............ .................. ................

October 2025
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Толик Панков [userpic]
C#, как присвоить char значение null или его аналог.

Пост из серии спрашивали - отвечаем.

Значение null переменной типа char не присвоить никак, т.к. char относится к "простым" (в другой литературе "базовым") типам, которые не могут принимать значение null, и обязательно должны быть проинициализированы каким-то значением.

Но иногда надо объявить переменную типа char, с которой работать будем потом, например, в цикле. Как тогда быть? Можно инициализировать переменную символом с кодом 0 (0x00). Проще всего сделать это так:

char Chr = '\0';

Но можно и другими способами:

char Chr = char.MinValue;
char Chr = (char)0;


Или даже с извращениями:

char Chr = "\0".ToCharArray()[0];

Или с извращениями, используя большой и тяжелый класс Convert, который лучше избегать, если он не очень нужен:

char Chr = Convert.ToChar(0);

Это репост с сайта http://tolik-punkoff.com
Оригинал: https://tolik-punkoff.com/2021/11/04/c-kak-prisvoit-char-znachenie-null-ili-ego-analog/

Tags: ,
Comments
(Anonymous)

Ничего не понимаю, почему не использовать
char? Chr

char и char? это, на самом деле, разные типы данных.

Выполните следующий код:

char chr = 'a';
char? chr1 = null;
chr = chr1;


и получите ошибку:

Cannot implicitly convert type 'char?' to 'char'. An explicit conversion exists (are you missing a cast?)

А если сделаете так:

chr = (char)chr1;

и chr1 будет null, то случится Runtime error:

System.InvalidOperationException was unhandled
Message="Нулевой объект должен иметь значение."


с расширенными типами (которые с '?') вообще надо аккуратнее быть, и использовать только когда ОЧЕНЬ надо.