c# - 在结构中,通过 Equals 实现 operator== 是否有效,但不覆盖 Equals 和 GetHashCode?

标签 c# .net operator-overloading equals equals-operator

这有效吗?

public struct MyStruct
{
    public int Foo { get; set; }

    public static bool operator ==(MyStruct a, MyStruct b)
    {
        return a.Equals(b);
    }

    public static bool operator !=(MyStruct a, MyStruct b)
    {
        return !a.Equals(b);
    }
}

(我知道它有点低效,因为 Object.Equals 默认对值类型使用反射。但它有效吗?)

我问是因为 ReSharper 突出显示它并警告我 MyStruct 定义了运算符“==”或运算符“!=”但不提供“Object.Equals(object o)”和“Object.GetHashCode( )'.

最佳答案

我认为this可能很有趣。

关于c# - 在结构中,通过 Equals 实现 operator== 是否有效,但不覆盖 Equals 和 GetHashCode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3649894/

相关文章:

c# - 将对象传递给集合编辑器

JAVA LDAP 错误 javax.naming.NamingException : [LDAP: error code 1 - 000004DC: LdapErr: DSID-0C09075A

.net - 基于 session 的网络服务

.net - 调试和编辑项目中作为 NuGet 包引用的内部库的最佳工作流程是什么?

c# - OpenCVSharp : Unable to load DLL 'OpenCvSharpExtern'

c++ - 这是制作迭代器的可接受方式吗?

swift - 是否可以在 Swift 中使用自定义运算符定义 [Int] * Int ?

c# - 在 .NET 应用程序中对资源进行分组的最佳策略是什么

c++ - 使用引用和指针对大对象进行运算符重载

c# - Azure Functions 用于登录远程计算机并执行任务