C#代码合法性咨询:类可含无公共读写器的私有字段?子类B写法正确吗?
C#语法疑问解答
1. 类中是否可以存在没有public getters和setters的私有字段?
完全可以。在C#中,类的成员默认访问修饰符是private,这类私有字段仅能在类内部访问,根本不需要对外暴露public的getter或setter。实际开发中,私有字段常用来存储类的内部状态,仅通过类内部的方法或按需暴露的属性来操作,避免外部直接篡改内部数据。
2. 子类B的写法是否正确?
不正确,编译会报错。原因是父类X仅定义了一个带参数的构造函数,未提供无参构造函数。而C#中,子类构造函数默认会隐式调用父类的无参构造函数,由于父类不存在该构造函数,因此必须在子类的构造函数中显式调用父类的带参构造函数。
修正后的代码示例:
using System; namespace Testiranje { class X { int x; public X(int i) { x = i; } } class B : X { int b; // 显式调用父类的带参构造函数 public B(int i) : base(i) { } } }
内容的提问来源于stack exchange,提问作者Mihailo
相关产品推荐
相关产品推荐

