Phr*_*ert 96 c# extension-methods overriding
在某些情况下,我想要使用扩展方法覆盖类中的方法.有没有办法在C#中做到这一点?
例如:
public static class StringExtension
{
public static int GetHashCode(this string inStr)
{
return MyHash(inStr);
}
}
Run Code Online (Sandbox Code Playgroud)
在那里我一直想做到这一点的情况是能够将一个字符串的哈希存储到数据库中,并有相同的值由所有使用String类的哈希值(即词典等)由于类使用内置的.Net哈希算法不能保证从一个版本的Framework到下一个版本兼容,我想用我自己的版本替换它.
还有其他情况我遇到了我想用扩展方法覆盖类方法的地方,所以它不仅仅特定于字符串类或GetHashCode方法.
我知道我可以通过子类化现有的类来做到这一点但是在很多情况下能够使用扩展来做它会很方便.
Mar*_*ell 90
没有; 扩展方法永远不会优先于具有合适签名的实例方法,并且永远不会参与多态(GetHashCode
是一种virtual
方法).