Я заметил, что что-то нечетное с linq и Содержит метод. Это, кажется, запутывается, на котором Содержит метод для вызова.
if (myString.Contains(strVar, StringComparison.OrdinalIgnoreCase))
{
// Code here
}
Вышеупомянутый код не компилирует со следующей ошибкой:
Аргументы типа для метода 'Система. Linq. Счетный. Содержит (Система. Наборы. Универсальный. IEnumerable, TSource, Система. Наборы. Универсальный. IEqualityComparer)', не может быть выведен из использования. Попытайтесь определить аргументы типа явно.
Если я удаляю использование linq оператор, это довольно содержанием (но тормозит весь код linq).
Что правильный синтаксис состоит в том, чтобы сказать компилятору, что я хочу использовать Строку. Содержит метод и не Linqs?
Аплодисменты
ImmutureList
подобен Collections.unmodifyList (новый ArrayList (список))
. Обратите внимание, что вновь созданный ArrayList
не назначен полю или переменной.
Не используйте систему Source Safe! Это не только плохо для системы управления версиями, но и плохо для всего мира.
Я использую Subversion с черепахой. Мне очень нравится. Довольно легко встать и бежать. Ветвление/слияние все еще может быть кошмаром.
Визуальный SVN тоже хорош.
-121--3227025- Это связано с отсутствием метода String.Contains (последовательность, StringComparison)
, определенного в BCL, и компилятор пытается использовать метод расширения. Определен только метод String.Contains (string) .
Каков правильный синтаксис, чтобы сообщить компилятору, что я хочу использовать метод
String.Contains
, а не Linqs?
Там не является перегрузкой String.Contains
, которая принимает StringComparision
. Вы можете использовать String.IndexOf (string, StringComparison)
:
// s is string
if(s.IndexOf(strVar, StringComparison.OrdinalIgnoreCase) >= 0) {
// code here
}
Это может быть связано с тем, что String.Contains
метод принимает только один параметр (строка
; там Нет перегрузки string . Подходит
, которые занимают stringComprison
значение), в то время как enumableable.Contains
Метод расширения занимает два. Однако параметры, которые вы поставляете, не соответствуют ожидаемым типам ввода, поэтому компилятор запутается.
Как сказал Дарин Димитров, String.Contains (string, StringComparison)
не существует как метод для типа String
.
System.Linq.Enumerable
, однако, содержит такую подпись. И строка
также является IEnumerable
, поэтому компилятор запутывается. Фактически вы сможете использовать Linq и компилировать, если замените StringCompar- ison на ICompar- er из Char
:
if (myString.Contains(strVar, Comparer<Char>.Default))
{
// Code here
}