C# c语言中的成员初始化#

C# c语言中的成员初始化#,c#,C#,我有两个班,A类和B类 public class A { public int someNumber; public A(int a) { someNumber = a; } } 现在class B有一个字段是class a的对象。在C++中,可以这样做: public class B { public A foo; public B(int a) : foo(a) { } } 但这在C#中不起作用。那么,如果不在类a中

我有两个班,
A类
B类

public class A
{ 
    public int someNumber;

    public A(int a)
    {
        someNumber = a; 
    }
}
现在
class B
有一个字段是
class a
的对象。在C++中,可以这样做:

public class B
{
    public A foo;

    public B(int a) : foo(a) { }
}

但这在C#中不起作用。那么,如果不在
类a
中使用默认构造函数,如何在C#中解决这个问题呢。更准确地说,如何为类B编写构造函数,将
foo
someNumber
值作为参数?

您可以尝试以下方法:

public class B 
{

    public A thing;

    public B(int a)
    {
        thing = new A(a);
    }
}

您可以尝试以下方法:

public class B 
{

    public A thing;

    public B(int a)
    {
        thing = new A(a);
    }
}

我想你是想把
东西
而不是
A
放在作业上。@MaxWeinzierl你完全正确!我的错。Thanks@Christos哦,好的,谢谢。我认为这是行不通的,因为我认为构造函数总是在执行构造函数体之前初始化所有类成员。如果某个成员没有默认构造函数,则会导致错误。@Morten实际上类成员在构造函数主体之前初始化-值类型为0,引用类型为
null
。@如果您能分享您的推理,我将不胜感激。提前谢谢。我想你是想把
东西
而不是
A
放在作业上。@MaxWeinzierl你完全正确!我的错。Thanks@Christos哦,好的,谢谢。我认为这是行不通的,因为我认为构造函数总是在执行构造函数体之前初始化所有类成员。如果某个成员没有默认构造函数,则会导致错误。@Morten实际上类成员在构造函数主体之前初始化-值类型为0,引用类型为
null
。@如果您能分享您的推理,我将不胜感激。谢谢。这不是真正的C++。你能删除C++标签吗?这不是真正的C++。你能删除C++标签吗?