为什么C#编译器说该字符串没有`Contains`方法

时间:2016-08-12 04:32:20

标签: c# linq visual-studio-2013 c#-5.0

为什么C#编译器说该字符串没有Contains方法?

  • errors对象为List<Error>
  • Error.Messagestring

对于本声明

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));

1 个答案:

答案 0 :(得分:4)

  

C#编译器对使用哪个Contains感到困惑,还是我?

你是。

正确的方法是IndexOf(),而不是Contains()。只有一个string.Contains()重载(如果你可以称之为),it doesn't take a StringComparison parameter