小编典典

C#中有什么方法可以用扩展方法覆盖类方法?

c#

有时候我想用扩展方法覆盖类中的方法。在C#中有什么方法可以做到这一点?

例如:

public static class StringExtension
{
    public static int GetHashCode(this string inStr)
    {
        return MyHash(inStr);
    }
}

我想要这样做的一种情况是能够将字符串的哈希存储到数据库中,并且使用该字符串类的哈希的所有类(例如Dictionary等)都使用相同的值。内置的.Net哈希算法不能保证从一个版本的Framework到下一个版本都兼容,我想用自己的版本替换它。

在其他情况下,我也想用扩展方法覆盖类方法,因此它不仅特定于字符串类或GetHashCode方法。

我知道我可以通过将现有类子类化来做到这一点,但是在很多情况下能够通过扩展来做到这一点很方便。


阅读 560

收藏
2020-05-19

共1个答案

小编典典

没有; 扩展方法永远不会比具有适当签名的实例方法优先,并且永远不会参与多态性(GetHashCode是一种virtual方法)。

2020-05-19