Рейтинг:
0
Wendelius
Метод Exists используется, когда вы определяете свой собственный предикат, чтобы проверить, существует ли элемент или нет. Таким образом, метод ожидает, что вы предоставите предикат, а не просто число.
Судя по опубликованному вами коду, вы просто хотите узнать, есть ли номер в списке или нет. Для этого попробуйте использовать List<t>.содержит метод(T) [^]
Рейтинг:
0
BillWoodruff
Немного подробнее о решении Джерри Шмитца:
Что вам нужно сделать, так это проверить 'PrefixCall для null и/или проверить 'PrefixCall для отсутствия записей.
Мне нравится справляться с подобными задачами, используя преимущества nullable bool:
public bool? ValidatePrefixCall()
{
if(PreFixCall == null) return null;
return PreFixCall.Count > 0;
}
public bool ThrowOnNullList = true;
// use example
bool? pfcIsValid = ValidatePrefixCall();
if (pfcIsValid == true)
{
// the list is initialized and has at least one item
}
else
{
if (pfcIsValid == false)
{
// the list is initialized and has no items
}
else
{
// the list is not initialized
if (ThrowOnNullList)
{
throw new NullReferenceException("PreFixCall is null");
}
}
}
0x01AA
Для удобства чтения я предпочитаю
if (pfcIsValid.Свойство hasvalue)
...
BillWoodruff
'Свойство hasvalue возвращает значение false, когда на велоэтапе, допускающий значение null не присваивается значение, и, когда значение обнуляемого типа было установлено в нуль. Подумайте об этом.
0x01AA
Да именно и это делает его таким понятным для чтения ;)
BillWoodruff
Я думаю, что вы упускаете здесь главное: мой пример кода дает три возможных состояния информации о списке. Использование 'HasValue объединяет два состояния.
0x01AA
Я имею в виду вот что:
if (pfcIsValid.Свойство hasvalue)
{
if (pfcIsValid)
{
// список инициализируется и содержит по крайней мере один элемент
}
еще
{
// список инициализирован и не содержит элементов
}
}
еще если (ThrowOnNullList)
{
throw new NullReferenceException("PreFixCall is null");
}
Она эквивалентна вашей логике, но с моей точки зрения более читабельна.
BillWoodruff
Привет, я ценю твою страсть к читабельности. Сейчас час ночи, и мне нужно на время отключить мозг :) Подумаю об этом завтра, ура, Билл
0x01AA
Спите спокойно :)
Кстати, намерения теряются в моем фрагменте кода выше.
BillWoodruff
Извините, но даже после хорошего ночного сна этот код не имеет для меня никакого смысла. "if (pfcIsValid)" ... если вы используете nullable bool, вы не можете напрямую получить доступ к логическому состоянию, как это: он даже не будет компилироваться;вы получите эту ошибку:
Ошибка CS026 не может неявно преобразовать тип 'bool?' в 'bool'.