为什么c#编译器说string没有' Contains '方法?

本文关键字:方法 Contains 没有 编译器 string 为什么 | 更新日期: 2023-09-27 18:01:59

为什么c#编译器说string没有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));

为什么c#编译器说string没有' Contains '方法?

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

你是

正确的方法是IndexOf(),而不是Contains()。只有一个string.Contains()重载(如果可以这样称呼它的话),并且它不接受StringComparison参数。