在类作用域中定义和实例化变量如何在内部解释

问题描述 投票:0回答:2

Class1 声明一个变量并实例化它。定义和实例化语句允许在类范围内。

class class1
{
public bool variable = false;
}

同样的逻辑为什么Class2不能实例化变量。为什么实例化语句不允许出现在这样的类范围内。

class class2 : class1
{
variable = false;
}

我很感兴趣,如果这背后有任何逻辑解释。可能编译器以某种特殊的方式解释这样的定义。

c# instantiation
2个回答
1
投票

除了内联初始化之外,类主体中不允许使用未包含在构造函数、方法或属性等内容中的语句。

如果您想将变量初始化为其他内容,请将其粘贴到构造函数中(这就是构造函数的用途):

public class Class2 : Class1
{
    public Class2()
    {
        variable = false;
    }
}

另一个类似的问题:

语句只能在方法中使用,那么声明呢?

总之,声明只允许在类范围内进行。内联初始化相当于初始化构造函数中的成员变量 - 我的猜测是这是作为语法糖添加的,因为内联初始化对于许多语言来说都是股票和交易。

还有一个关于命名的快速说明,类通常是标题大小写。


0
投票

从来没有看到你的第二种情况有问题,除了在第二情况下你没有定义变量的类型。

编辑

我想我误解了你的问题:

成员

variable
是基类定义的一部分。您无法通过任何方法访问类的“public”成员。就是这样。

© www.soinside.com 2019 - 2024. All rights reserved.