Class1 声明一个变量并实例化它。定义和实例化语句允许是类范围。
class class1
{
public bool variable = false;
}
使用相同的逻辑为什么 Class2 不能实例化变量。为什么不允许实例化语句在这样的类范围内。
class class2 : class1
{
variable = false;
}
我很感兴趣,如果这背后有任何合乎逻辑的解释。可能是编译器以某种特殊的方式解释了这样的定义。
Class1 声明一个变量并实例化它。定义和实例化语句允许是类范围。
class class1
{
public bool variable = false;
}
使用相同的逻辑为什么 Class2 不能实例化变量。为什么不允许实例化语句在这样的类范围内。
class class2 : class1
{
variable = false;
}
我很感兴趣,如果这背后有任何合乎逻辑的解释。可能是编译器以某种特殊的方式解释了这样的定义。
除了内联初始化之外,类主体中不允许使用不包含在构造函数、方法或属性等内容中的语句。
如果要将变量初始化为其他内容,请将其粘贴在构造函数中(这是构造函数的用途):
public class Class2 : Class1
{
public Class2()
{
variable = false;
}
}
另一个类似的问题:
总之,声明只允许在类范围内。内联初始化等同于在构造函数中初始化成员变量——我猜这是作为语法糖添加的,因为内联初始化对于许多语言来说都是存货交易。
还有一个关于命名的快速说明,类通常是标题大小写的。
从来没有看到你的第二种情况有问题,除了在第二种情况下你没有定义变量的类型。
编辑
我想我误解了你的问题:
该成员variable
是基类定义的一部分。您不能通过任何方法访问类的公共 成员。这就对了。