当前位置:  开发笔记 > 编程语言 > 正文

方法隐藏如何在C#中起作用?

如何解决《方法隐藏如何在C#中起作用?》经验,为你挑选了2个好方法。

为什么打印以下程序

B
B

(正如它应该)

public class A
    {
        public void Print()
        {
            Console.WriteLine("A");
        }
    }

    public class B : A
    {
        public new void Print()
        {
            Console.WriteLine("B");
        }

        public void Print2()
        {
            Print();
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var b = new B();
            b.Print();
            b.Print2();
        }
    }

但如果我们删除B类中的关键字'public',就像这样:

    new void Print()
    {
        Console.WriteLine("B");
    }

它开始打印

A
B



1> Joel Coehoor..:

当你删除public访问修饰符时,你删除任何new Print()Main函数调用B的方法的能力,因为它现在默认为private.Main不再可以访问它了.

唯一剩下的选择是回退到从A继承的方法,因为这是唯一可访问的实现.如果您要从另一个B方法中调用Print(),您将获得B实现,因为B的成员将看到私有实现.



2> bdukes..:

您正在制作该Print方法private,因此唯一可用的Print方法是继承方法.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有