为什么C#编译器说该字符串没有Contains
方法?
errors
对象为List<Error>
Error.Message
是string
对于本声明
Assert.True(errors.Any(e => e.Message.Contains("hash value",
StringComparison.OrdinalIgnoreCase)));
编译器说:
'string'不包含'Contains'的定义,最好的扩展方法重载
System.Linq.Queryable.Contains<TSource>(System.Linq.IQueryable<TSource>, TSource, System.Collections.Generic.IEqualityComparer<TSource>)
有一些无效的参数
对于这个陈述,编译器很高兴:
Assert.True(errors.Any(e => e.Message.IndexOf("hash value",
StringComparison.OrdinalIgnoreCase) >= 0));
答案 0 :(得分:4)
C#编译器对使用哪个
Contains
感到困惑,还是我?
你是。
正确的方法是IndexOf()
,而不是Contains()
。只有一个string.Contains()
重载(如果你可以称之为),it doesn't take a StringComparison
parameter。