C# 如何用string.Contains(string,System.StringComparison)修复错误CA1307?
在我的测试中,我有一个断言包含C# 如何用string.Contains(string,System.StringComparison)修复错误CA1307?,c#,.net-core,C#,.net Core,在我的测试中,我有一个断言包含p.contains(“.Tests”),但它会出错 错误CA1307根据当前用户的区域设置,“string.Contains(string)”的行为可能会有所不同。将“Solution.Tests.PackageTests.\u bowerEnabledProjects”中的此调用替换为对“string.Contains(string,System.StringComparison)”的调用。 所以我想通过:p.Contains(“.Tests”,System.S
p.contains(“.Tests”)
,但它会出错
错误CA1307根据当前用户的区域设置,“string.Contains(string)”的行为可能会有所不同。将“Solution.Tests.PackageTests.\u bowerEnabledProjects”中的此调用替换为对“string.Contains(string,System.StringComparison)”的调用。
所以我想通过:p.Contains(“.Tests”,System.StringComparison)
来修复它,但它会出错:
错误CS0119“StringComparison”是一种类型,在给定上下文中无效
是一个枚举-警告表明您要指定该枚举中的一个值,例如StringComparison.Ordinal
但是,此警告在两个方面是错误的:
- 在我看来,没有
方法。的文档甚至给出了如何实现这种方法的示例string.Contains(string,StringComparison)
- 警告声称行为取决于区域设置,这是不正确的。
string.Contains的文档说明:“此方法执行顺序(区分大小写和区域性)比较。”
我建议禁用此警告。下面是我为那些仍在寻找此问题解决方案的人提供的答案 我也遇到了同样的问题,我修改了下面的代码
if (!string.IsNullOrWhiteSpace(searchQuery))
{
searchQuery = searchQuery.Trim();
collection = collection.Where(a => a.MainCategory.Contains(searchQuery, StringComparison.Ordinal)
|| a.FirstName.Contains(searchQuery, StringComparison.Ordinal)
|| a.LastName.Contains(searchQuery, StringComparison.Ordinal));
}
我应该使用不变式文化还是序数?@DiPix:阅读了各种枚举值的描述后,这通常是一个由您决定的问题。(对于机器生成的文本而不是人工生成的文本,序数通常是一种很好的方法;对于您正在编写的测试,几乎可以肯定。)但是,该警告基本上是无效的。我应该使用不变量文化还是序数?@DiPix:查看我的更新答案-该警告基本上是错误的。