前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CA1061:不要隐藏基类方法

CA1061:不要隐藏基类方法

作者头像
呆呆
发布2022-02-22 20:53:25
2950
发布2022-02-22 20:53:25
举报
文章被收录于专栏:centosDai

规则 ID

CA1061

类别

设计

修复是中断修复还是非中断修复

重大

原因

派生类型声明的方法与其基方法之一具有相同的名称和相同数量的参数;一个或多个参数是基方法中相应参数的基类型;所有剩余参数的类型都与基方法中相应参数的类型相同。

规则说明

如果派生方法的参数签名只是在类型方面有所不同,而且与基方法的参数签名中的对应类型相比,这些类型的派生方式更弱,则基类型中的方法由派生类型中的同名方法隐藏。

如何解决冲突

若要解决此规则的冲突,请删除或重命名该方法,或者更改参数签名,使该方法不会隐藏基方法。

何时禁止显示警告

不禁止显示此规则发出的警告。

示例

以下示例显示与此规则冲突的方法。

代码语言:javascript
复制
class BaseType
{
    internal void MethodOne(string inputOne, object inputTwo)
    {
        Console.WriteLine("Base: {0}, {1}", inputOne, inputTwo);
    }
    internal void MethodTwo(string inputOne, string inputTwo)
    {
        Console.WriteLine("Base: {0}, {1}", inputOne, inputTwo);
    }
}
class DerivedType : BaseType
{
    internal void MethodOne(string inputOne, string inputTwo)
    {
        Console.WriteLine("Derived: {0}, {1}", inputOne, inputTwo);
    }
    // This method violates the rule.
    internal void MethodTwo(string inputOne, object inputTwo)
    {
        Console.WriteLine("Derived: {0}, {1}", inputOne, inputTwo);
    }
}
class Test
{
    static void Main1061()
    {
        DerivedType derived = new DerivedType();
        // Calls DerivedType.MethodOne.
        derived.MethodOne("string1", "string2");
        // Calls BaseType.MethodOne.
        derived.MethodOne("string1", (object)"string2");
        // Both of these call DerivedType.MethodTwo.
        derived.MethodTwo("string1", "string2");
        derived.MethodTwo("string1", (object)"string2");
    }
}

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档