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