C# 复杂类构造函数



我有以下系统:一个名为DataClass的"母"类具有属性,其中两个是类,PartClassMemberClass。特别是,MemberClass具有属性,其中之一是类,SideClass- 具有自己的属性。

下面是代码示例:

using System;
namespace ConsoleApp
{
public class DataClass
{
public int num { get; set; }
public string code { get; set; }
public PartClass part { get; set; }
public MemberClass member { get; set; }
public DataClass()
{
PartClass part = new PartClass();
MemberClass member = new MemberClass();
}
}
public class PartClass
{
public int seriesNum { get; set; }
public string seriesCode { get; set; }
public PartClass() { }
}
public class MemberClass
{
public int versionNum { get; set; }
public SideClass side { get; set; }
public MemberClass()
{
SideClass side = new SideClass();
}
}
public class SideClass
{
public string firstDetail { get; set; }
public string secondDetail { get; set; }
public bool include { get; set; }
public SideClass() { }
}

现在,我正在尝试初始化DataClass并将值分配给所有属性,但这不起作用。 因此,DataClass"拥有"PartClassMemberClass,而MemberClass本身"看到"SideClass,这是底层阶级,在某种程度上独立于所有人。 这里是其余代码:

class Program
{
static void Main(string[] args)
{
DataClass myData = new DataClass()
{
num = 13,
code = "message",
//from here downwards nothing works; error..
part.seriesNum = 1,
part.seriesCode = 7,
member.versionNum = 9,
member.side.firstDetail = "pass",
member.side.secondDetail = "checked",
member.side.include = true;
}
}

}

我认为通过安装构造函数和属性,DataClass实例化不会有问题,但实际上DataClass看不到任何非平凡的属性(引用类的属性(。 有人可以帮我吗?谢谢。。

使用以下:

DataClass myData = new DataClass()
{
num = 13,
code = "message",
part = new PartClass()
{
seriesNum = 1,
//here down nothing works; error
seriesCode = "abc"
},
member = new MemberClass()
{
versionNum = 9,
side = new Side()
{
firstDetail = "pass",
secondDetail = "checked",
include = true
}
}
};

若要不必每次都手动创建成员类和部件类的实例,可以使用 get 和 set 方法创建实例。

public class DataClass
{
public int num { get; set; }
public string code { get; set; }
private PartClass _part;
public PartClass part { get { if (_part == null) _part = new PartClass(); return _part; } set { _part = value; } }

private MemberClass _member;
public MemberClass member { get { if (_member == null) _member = new MemberClass(); return _member; } set { _member = value; } }
}

您应该创建一个 DataClass 的实例,然后初始化字段

DataClass myData = new DataClass();
myData.num = 13,
myData.code = "message",
myData.part.seriesNum = 1,
myData.part.seriesCode = 7,
myData.member.versionNum = 9,
myData.member.side.firstDetail = "pass",
myData.member.side.secondDetail = "checked",
myData.member.side.include = true;

最新更新