Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CA1847:对单个字符使用 string.Contains(char) 而不是 string.Contains(string)

CA1847:对单个字符使用 string.Contains(char) 而不是 string.Contains(string)

作者头像
呆呆
发布于 2022-02-26 00:41:01
发布于 2022-02-26 00:41:01
55700
代码可运行
举报
文章被收录于专栏:centosDaicentosDai
运行总次数:0
代码可运行

规则 ID

CA1847

类别

“性能”

修复是中断修复还是非中断修复

非中断

原因

当 string.Contains(char) 可用时使用 string.Contains(string)。

规则说明

在搜索单个字符时,使用 string.Contains(char) 可获得比使用 string.Contains(string) 时更好的性能。

如何解决冲突

通常,只需使用 char 文本而无需使用字符串文本即可解决规则问题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public bool ContainsLetterI()
{
    var testString = "I am a test string.";
    return testString.Contains("I");
}
Public Function ContainsLetterI() As Boolean
    Dim testString As String = "I am a test string."
    Return testString.Contains("I")
End Function
可将此代码更改为使用 char 文本。
public bool ContainsLetterI()
{
    var testString = "I am a test string.";
    return testString.Contains('I');
}
Public Function ContainsLetterI() As Boolean
    Dim testString As String = "I am a test string."
    Return testString.Contains("I"c)
End Function

何时禁止显示警告

如果并不在意所讨论的搜索调用对性能的影响,可禁止显示此规则的冲突警告。

另请参阅

性能规则

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CA1850:首选静态 HashData 方法,而非 ComputeHash
创建派生自 HashAlgorithm 的实例类型,用于调用其 ComputeHash 方法,并且该类型具有静态 HashData 方法。
呆呆
2022/02/26
4850
CA1846:首选 AsSpan 次选 Substring
对其中一个 String.Substring 重载的调用结果被传递给具有接受 ReadOnlySpan<Char> 的可用重载的方法。
呆呆
2022/02/26
9830
CA1828:如果可以使用 AnyAsync,请勿使用 CountAsync/LongCountAsync
在使用 AnyAsync 方法会更有效的情况下使用了 CountAsync 或 LongCountAsync 方法。
用户4268038
2022/02/19
6320
CA1834:对单字符字符串使用 StringBuilder.Append(char)
使用单位长度字符串调用 StringBuilder.Append 时,请考虑使用 const char 而不是单位长度 const string 来提高性能。
用户4268038
2022/02/19
6130
CA1845:使用基于跨度的“string.Concat”
此规则查找包含 Substring 调用的字符串串联表达式,同时建议将 Substring 替换为 AsSpan 并使用基于跨度的 String.Concat 重载。
呆呆
2022/02/26
4030
CA2119:密封满足私有接口的方法
可继承的公共类型为 internal(在 Visual Basic 中为 Friend)接口提供可重写的方法实现。
用户4268038
2022/02/20
3340
CA1836:可用时最好使用 IsEmpty (而不是 Count)
使用了 Count 或 Length 属性或 Count<TSource>(IEnumerable<TSource>) 扩展方法,通过将值与 0 或 1 进行比较来确定对象是否包含任何项,以及对象是否具有更有效的 IsEmpty 属性可以代替使用。
用户4268038
2022/02/19
4940
CA2002:不要锁定具有弱标识的对象
当可以跨应用程序域边界直接进行访问对象时,则认为该对象具有弱标识。 对于尝试获取对具有弱标识的对象的锁的线程,该线程可能会被其他应用程序域中持有对同一对象的锁的另一线程所阻止。
呆呆
2022/02/26
5740
CA1831:在合适的情况下,为字符串使用 AsSpan 而不是基于范围的索引器
对字符串使用了范围索引器,并将值隐式分配给了 ReadOnlySpan<char>。
用户4268038
2022/02/19
1.2K0
CA1841:首选字典包含方法
此规则可找到在 IDictionary<TKey,TValue> 的 Keys 或 Values 集合上对 Contains 方法的调用,这些调用可替换为在字典本身对 ContainsKey 或 ContainsValue 方法的调用。
呆呆
2022/02/26
3610
CA1827:如果可以使用 Any,请勿使用 Count/LongCount
在使用 Any 方法会更有效的情况下使用了 Count 或 LongCount 方法。
用户4268038
2022/02/19
6090
CA1837:使用 Environment.ProcessId 而不是 Process.GetCurrentProcess().Id
此规则会查找对 System.Diagnostics.Process.GetCurrentProcess().Id 的调用,并建议改用 System.Environment.ProcessId,因为这样更高效。
用户4268038
2022/02/19
5830
CA1050:在命名空间中声明类型
应在命名空间内声明类型以避免名称冲突,并作为一种在对象层次结构中组织相关类型的方式。 任何命名的命名称空间之外的类型均位于无法在代码中引用的全局命名空间中。
呆呆
2022/01/10
5110
CA1036:重写可比较类型中的方法
类型实现 System.IComparable 接口,并且不重写 System.Object.Equals,也不重载表示相等、不等、小于或大于的语言特定运算符。 如果类型仅继承接口的实现,则规则不会报告冲突。
呆呆
2022/01/10
6970
CA1820:使用字符串长度测试是否有空字符串
使用 String.Length 属性或 String.IsNullOrEmpty 方法比较字符串比使用 Equals 更快。 这是因为 Equals 执行的 MSIL 指令比 IsNullOrEmpty 或执行以用于检索 Length 属性值并将其与零进行比较的指令数要多得多。
呆呆
2022/02/19
3400
CA1067:实现 IEquatable 时重写 Equals
实现 IEquatable<T> 接口的类型指示它可支持对类型的两个实例进行比较以确定二者是否相等。 还应重写 Equals 和 GetHashCode() 方法的基类实现,以便其行为与 System.IEquatable<T>.Equals 实现的行为一致。 请参阅此处了解详细信息。
用户4268038
2022/01/11
2830
CA1826:使用属性,而不是 Linq Enumerable 方法
此规则在具有等效但更高效的属性的类型集合上标记 Enumerable LINQ 方法调用,以提取相同的数据。
用户4268038
2022/02/19
6620
CA1200:不要使用带前缀的 cref 标记
XML 文档标记中的 cref 属性是指“代码引用”。 它指定标记的内部文本是一个代码元素,例如类型、方法或属性。 避免使用带有前缀的 cref 标记,因为它会阻止编译器验证引用。 它还会阻止 Visual Studio 集成开发环境 (IDE) 在重构过程中查找和更新这些符号引用。 建议使用不带前缀的完整语法以引用 cref 标记中的符号名称。
呆呆
2022/02/22
5480
CA1830:在 StringBuilder 上优先使用强类型 Append 和 Insert 方法重载。
调用 StringBuilder Append 或 Insert 方法时,使用的是对 Append 或 Insert 方法有专用重载的类型调用 ToString 生成的参数。
用户4268038
2022/02/19
4450
CA1066:重写 Equals 时实现 IEquatable
值类型重写 Equals 方法指示它可支持对类型的两个实例进行比较以确定二者的值是否相等。 请考虑实现 IEquatable<T> 接口以支持强类型相等性测试。 这可确保执行相等性检查的调用方调用强类型 System.IEquatable<T>.Equals 方法,避免对参数进行装箱,从而提高性能。 有关详细信息,请参阅此文。
用户4268038
2022/01/11
3220
推荐阅读
相关推荐
CA1850:首选静态 HashData 方法,而非 ComputeHash
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档