簡體   English   中英

C# 復雜類構造函數

[英]C# complex class constructors

我有以下系統:一個名為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
        }
    }
};

為了不必每次都手動創建 Member Class 和 Part Class 的實例,您可以使用 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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM