我正在阅读一些代码而不了解基础工作.阅读一些例子,但他们没有解释我的问题.
两者都给出相同的输出.为什么我们需要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"); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。