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++标签吗?