การใช้ฟิลด์อ็อบเจ็กต์เป็นพารามิเตอร์ฟังก์ชันฟิลด์อื่น [ซ้ำ]

Jan 03 2021

เป็นไปได้โดยใช้ฟิลด์อ็อบเจ็กต์ใหม่เป็นพารามิเตอร์ฟังก์ชันฟิลด์อื่น ๆ (ในอ็อบเจ็กต์เริ่มต้นเดียวกันนี้)?

List<Reservations> reservations = new List<Reservations>()
 {
  new Reservations{title="Grooming", className=checkColor(title)},
 };

public string checkColor(string title)
{
 ...
}         

คำตอบ

Sisir Jan 03 2021 at 00:56

เป็นไปไม่ได้กับการออกแบบโค้ดปัจจุบันของคุณ เหตุผลคือคุณไม่สามารถอ้างอิง 1 ฟิลด์ของวัตถุในฟิลด์อื่นก่อนที่วัตถุจะถูกสร้างขึ้นอย่างสมบูรณ์ นั่นก็เหมือนกับสาเหตุที่เราไม่สามารถใช้ค่าฟิลด์ 1 ในอีกค่าหนึ่งได้ในขณะที่ประกาศเป็นตัวแปรระดับคลาส

อย่างไรก็ตามมีหลายวิธีที่คุณสามารถบรรลุสิ่งที่คุณต้องการได้

ตัวเลือกที่ 1:

const string titleText = "Grooming";
List<Reservations> reservations = new List<Reservations>()
{
    new Reservations{title=titleText, className=checkColor(titleText)},
};

private static string checkColor(string title)
{
 ...
}

ทางเลือกที่ 2:

    class Consumer
    {
        List<Reservations> reservations = new List<Reservations>()
        {
            new Reservations{title="Grooming"}
        };
    }

    class Reservations
    {
        string _title;

        public string title
        {
            get
            {
                return _title;
            }

            set
            {
                _title = value;
                className = checkColor(title);
            }
        }

        public string className;

        private string checkColor(string title)
        {
            return "";
        }
    }