c# – 为什么我们需要base()关键字
发布时间:2020-12-15 20:06:35 所属栏目:百科 来源:网络整理
导读:我正在阅读一些代码而不了解基础工作.阅读一些例子,但他们没有解释我的问题. 两者都给出相同的输出.为什么我们需要base()? 没有基础的代码 class B : A{ public B() { Console.WriteLine("B"); }}class A{ public A() { Console.WriteLine("A"); }}class te
我正在阅读一些代码而不了解基础工作.阅读一些例子,但他们没有解释我的问题.
两者都给出相同的输出.为什么我们需要base()? 没有基础的代码 class B : A { public B() { Console.WriteLine("B"); } } class A { public A() { Console.WriteLine("A"); } } class test { static void Main() { A a = new A(); B b = new B(); Console.ReadLine(); } } VS 带有基础的代码 class B : A { public B():base() { Console.WriteLine("B"); } } class A { public A() { Console.WriteLine("A"); } } class test { static void Main() { A a = new A(); B b = new B(); Console.ReadLine(); } } 解决方法
在您的示例代码中,没有必要,因为如果您没有指定一个,编译器将隐式调用默认构造函数.但是,假设您在基类中有两个构造函数:
class A { public A() { Console.WriteLine("A"); } public A(string foo) { Console.WriteLine(foo); } } 现在您可以指定要调用的基类构造函数: class B : A { public B() : base("Foo") { Console.WriteLine("B"); } } 此外,如果您的基类缺少默认构造函数(或者如果该构造函数不可访问它的保护级别),则需要在子类中指定一个: class A { public A(string foo) { Console.WriteLine(foo); } } class B : A { // Error: 'A' does not contain a constructor that takes 0 arguments public B() { Console.WriteLine("B"); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |