C#重写GetHashCode的字符串类型

是否有可能重写字符串,int,int32等的GetHashCode方法。

我不想创建一个新的对象或类并重写它。 我想知道是否有方法来重写类型的方法。 类似于扩展,但不是真的。

string myString = "sometext";
myString.GetHashCode(); -- I want to override this method. 

如果您不想创建自己的类,那么不需要,因为只有在子类中才可以进行覆盖。

另一种方法是创建一个自定义的扩展方法,如:

public static class MyExtensions
{
    public static int GetHashCode2(this string s)
    { 
         // Implementation
    }
}

这会产生类似的效果,但您需要调用.GetHashCode2()而不是.GetHashCode()


你不能。 即使你添加了扩展方法,如果有一个实例方法和一个具有相同签名的扩展方法被调用,那么该实例方法将获胜。 您也无法扩展stringint因为它们是密封的。 你能够做的最好的是创建一个全新的类/结构体,它带有一个字符串/ int属性,用你自己的实现来重写GetHashCode(如果你愿意,你可以提供隐式转换为stringint


我认为你只能做到这一点,如果它在另一个类[http://stackoverflow.com/questions/371328/why-is-it-important-to-override-gethashcode-when-equals-method-is-overriden-in -C]

另外,我不认为你会想在全局覆盖它,因为有很可能引发其他事情将使用该基地GetHashCode()

最后,问问自己:“你为什么要这样做?” 如果你没有很好的理由,你不需要这样做。

链接地址: http://www.djcxy.com/p/39783.html

上一篇: C# overriding GetHashCode on a string type

下一篇: implementing Equals but not GetHashCode in c#