С# struct, как назначить нулевое значение?
У меня есть список:
List<int, SomeStruct>
По какой-то причине это не позволяет мне присваивать ему нулевые значения. Что делать, если я не хочу связывать структуру?
Ответы
Ответ 1
Используйте типы с нулевым значением:
List<int, SomeStruct?>
Вы не можете назначить null
элементу списка, потому что struct - это типы значений, а null
означает пустой указатель и поэтому может быть присвоен только переменным ссылочного типа.
Также обратите внимание, что List
, поскольку вы его используете, не существует в .NET! Возможно, вы хотите Dictionary
?
Ответ 2
В С# структура представляет собой "тип значения", который не может быть нулевым.
Если вам действительно нужно действительно уметь это обнулить, тогда сделайте его "нулевым", добавив трейлинг-вопросительный знак.
Вероятно, вам стоит сначала изучить детали этого, но, скорее всего, вы действительно не хотите "struct" вообще, но лучше с "классом".
Ответ 3
Если вы не определили пользовательскую общую коллекцию, List<T, U>
не существует в пространстве имен System.Collections.Generic
. Вы скорее имели в виду Dictionary<TKey, TValue>
?
Вы можете использовать типы Nullable: Using Nullable Types (C# Programming Guide)
.
Как и для любого ValueType, вам нужно явно указать, что вы допустите нулевые значения для вашего типа. Вы можете сделать это, объединив символ "?
" с вашим именем типа или отметив его как Nullable, где T - имя вашей структуры.