aksimoN Ответов: 3

C# elementatordefault() - можно ли установить свой собственный дефолт


Я использую
ElementAtOrDefault()
и я хочу установить свое собственное значение по умолчанию

Что я уже пробовал:

Что-то вроде этого:
string[] list_of_strings ={"ala", "ma","mala" }
set default="something"
string q =list_of_strings.ElementAtOrDefault(0)
string x =list_of_strings.ElementAtOrDefault(1)
string y =list_of_strings.ElementAtOrDefault(2)
string z =list_of_strings.ElementAtOrDefault(3)
Console.Write(q + Environment.NewLine);
Console.Write(x + Environment.NewLine);
Console.Write(y + Environment.NewLine);
Console.Write(z + Environment.NewLine);


Выход:
Алабама
ма
малая
что-то

Возможно ли это?

F-ES Sitecore

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

aksimoN

ТПХ

3 Ответов

Рейтинг:
21

aksimoN

Там нет ничего о настройке значения по умолчанию

Richard MacCutchan

Пример кода показывает, как это сделать.

aksimoN

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

Richard MacCutchan

Цитата:Значение по умолчанию для справки и типы, допускающие значение null является null.

Richard MacCutchan

Вы также можете реализовать IList<T>.Свойство Item[Int32] (System.Коллекции.Общая) | Майкрософт Документы[^] в вашем собственном классе и установите значение по умолчанию для Item[] собственность.

Рейтинг:
18

BillWoodruff

Марк Гравелл (StackOverFlow) опубликовал полезные общие методы расширения для этого много лет назад: [^].


Рейтинг:
12

aksimoN

Я искал что-то вроде этого:

string abc = List_of_strings[4].name ?? "something";


Это работает идеально для меня, потому что, когда вы спрашиваете об объекте, который не существует, вы получите "нет" вместо ошибки.


Richard Deeming

Если List_of_strings не содержит пяти элементов, вы все равно получите ошибку.

Если List_of_strings[4] возвращается null, вы все равно получите ошибку.

aksimoN

Я использую что-то вроде этого:

cmd.Parameters.Add("@state", SqlDbType.NVarChar).Value = member?.state ?? "none";

и это работает на меня, где государство-член не имеет никакой ценности.