Подтвердить что ты не робот

С# struct, как назначить нулевое значение?

У меня есть список:

List<int, SomeStruct>

По какой-то причине это не позволяет мне присваивать ему нулевые значения. Что делать, если я не хочу связывать структуру?

4b9b3361

Ответ 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 - имя вашей структуры.