c# - 我必须通过构造函数初始化派生变量吗?

标签 c# inheritance

是否可以像这样初始化变量:

class A
{
public int variable;
}
class B : A
{
variable = 123;
}

而不是像这样使用构造函数? :

class A
{
   public int variable;
}

class B : A
{
   public B()
   {
   variable = 123;
   }
}

此处:Initialize class fields in constructor or at declaration?

这两种方式似乎是等价的,但是在派生类中使用第一种方式似乎是非法的。那么,是否可以使用构造函数以外的其他方式来初始化变量呢?

最佳答案

当你声明一个类时,你可以初始化一个类的字段:

public class Example
{
    public int Number = 3;
}

或者您可以在如下构造函数中这样做:

public class Example;
{
    public int Number;
    public Example(int number)
    {
        Number = number;
    }
}

只有这两个选项。在您的情况下,您有一个基类,您可以在其中声明一个字段。所以这个字段可以在声明时或通过构造函数初始化。这就是以下内容非法的原因:

class A
{
    public int variable;
}

class B : A
{
    variable = 123;
}

Then, is it possible to initialize variables in the other way than using constructor?

当然可以,但是你必须在基类中这样做:

class A
{
    public int variable = 123;
}

关于c# - 我必须通过构造函数初始化派生变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41534343/

相关文章:

javascript - 通过继承 React.js 中的值来更改复选框的值

c++ - 是否允许 unique_prts 隐式转换其包含类型?

c# - Ruby和Dot net之间的加解密

c# - 为什么 Azure WebJob JobHost.CallAsync 返回错误

c++ - 使用堆栈分配的对象将异构对象存储在 vector 中

c++ - 为什么类不能继承其父类的成员类型?

c++ - 转换一个由迭代器指向的对象

c# - SqlBulkCopy.WriteToServerAsync 不遵循 `await` 关键字。为什么?

c# - 我在 JIT/CLR 中发现了一个错误 - 现在我该如何调试或重现它?

c# - 如何使 PictureBox 使用最近邻重采样?