gpt4 book ai didi

c# - Char.Equals 与 Object.Equals——ReSharper 建议我应该使用 Object.Equals。我是不是该?

转载 作者:太空狗 更新时间:2023-10-29 18:12:28 27 4
gpt4 key购买 nike

基本上,我想知道在这种情况下我是否应该听 ReSharper...

您认为与字符进行比较应该使用 Char.Equals(char),因为它可以避免拆箱,但 Resharper 建议使用 Object.Equals(obj)。也许我在这里遗漏了什么?


private const DEFAULT_CHAR = '#';

// DependencyProperty backing
public Char SpecialChar
{
get { return (Char)GetValue(SpecialCharProperty); }
}

// ReSharper - Access to a static member of a type via a derived type.
if (Char.Equals(control.SpecialChar, DEFAULT_CHAR)) { ... }

我猜这是因为有 DependencyProperty 支持?

最佳答案

不可能覆盖 static 成员 - Object.Equals() 是静态成员,而 Char 不能 覆盖它,即使您可以在 Char 类型上调用它(参数仍然是 Object 类型)

因此,调用与否没有区别

Object.Equals(object yourChar, object anotherChar) 

Char.Equals(object yourChar, object anotherChar)

因为在任何一种情况下都会发生装箱。

为避免这种情况,请使用实例方法,该方法在 Char被覆盖:

if (yourChar.Equals(anotherChar)) doSomething();

关于c# - Char.Equals 与 Object.Equals——ReSharper 建议我应该使用 Object.Equals。我是不是该?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8649774/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com