c# – 是否需要默认构造函数?
发布时间:2020-12-15 19:57:13 所属栏目:百科 来源:网络整理
导读:这两者有什么区别? class Class1{ public int a = 1;}class Class2{ public int a; public Class2() { a = 1; }} 如果没有,我可以跳过默认构造函数并像Class1一样初始化我的变量吗? 解决方法 在您的具体示例中,字段初始值设定项(Class1)很好.可以说,不公平
这两者有什么区别?
class Class1 { public int a = 1; } class Class2 { public int a; public Class2() { a = 1; } } 如果没有,我可以跳过默认构造函数并像Class1一样初始化我的变量吗? 解决方法
在您的具体示例中,字段初始值设定项(Class1)很好.可以说,不公平的是公共领域; p我会建议:
// manually implemented property with field-initializer private int a = 1; public int A { get { return a;} set { a = value;} } 要么: // automatically implemented property with constructor-based initialization public int A {get;set;} public Class1() { A = 1; } @hvd’s answer正确地说明了差异.为了说明这可以给出不同结果的具体示例,请参阅以下内容.这个例子的主要收集消息实际上是“在使用构造函数的虚方法时非常小心”. 输出第一: Class1: 1 Class2: 0 码: using System; abstract class SomeBaseClass { protected abstract void Write(); protected SomeBaseClass() { Console.Write(GetType().Name + ": "); Write(); } } class Class1 : SomeBaseClass { protected override void Write() { Console.WriteLine(a); } public int a = 1; } class Class2 : SomeBaseClass { protected override void Write() { Console.WriteLine(a); } public int a; public Class2() { a = 1; } } static class Program { static void Main() { new Class1(); new Class2(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容