簡體   English   中英

如何使用類的單個對象實例來設置多個成員值?

[英]How to use single object instance for class to set the multiple member value?

現在我正在使用下面的代碼來設置DateRanges類成員變量。

       DateRanges DateRanges1 = new DateRanges();
       DateRanges DateRanges2 = new DateRanges();
       DateRanges DateRanges3 = new DateRanges();

        DateRanges1.Label = "Last Week";
        DateRanges1.Range = Lastweek;
        this.dateRange.Ranges.Add(DateRanges1);
        DateRanges2.Label = "Last 1 Month";
        DateRanges2.Range = Lastmonth;
        this.dateRange.Ranges.Add(DateRanges2);
        DateRanges3.Label = "Last 2 Months";
        DateRanges3.Range = Last2month;
        this.dateRange.Ranges.Add(DateRanges3);

我想減少代碼。 有沒有辦法做到這一點。

在這里,DateRanges是具有label(string type),range(object)成員的類。 this.daterange.ranges是我的自定義組件屬性。 謝謝你的幫助。

為了使代碼更簡潔,我建議:

  • 重命名Lastmonth等以遵循.NET命名約定
  • 不用理會任何單獨的變量(但如果這樣做,也應使它們也遵循.NET命名約定)
  • DateRanges重命名為DateRange (因為它似乎只是一個單一的日期范圍)
  • DateRange創建一個接受范圍和標簽的構造函數

然后,您可以:

dateRange.Ranges.Add(new DateRange(LastWeek, "Last Week"));
dateRange.Ranges.Add(new DateRange(LastMonth, "Last 1 Month"));
dateRange.Ranges.Add(new DateRange(Last2Months, "Last 2 Months"));

或可能(取決於Ranges的類型):

// Here AddRange would be expected to accept IEnumerable<DateRange>
dateRange.Ranges.AddRange(new[] {
    new DateRange(LastWeek, "Last Week"),
    new DateRange(LastMonth, "Last 1 Month"),
    new DateRange(Last2Months, "Last 2 Months")
});

與使用對象初始化程序和非常規的局部變量名稱相比,這兩種方法在IMO方面都更加簡潔。

如果圍繞初始化dateRanges的同一代碼執行此dateRanges ,則可以使用:

dateRanges = new FooBar // Whatever the type actually is
{
    // Other properties as well
    Ranges =
    {
        new DateRange(LastWeek, "Last Week"),
        new DateRange(LastMonth, "Last 1 Month"),
        new DateRange(Last2Months, "Last 2 Months")
    }
};

您只能有一個變量,而不是3個變量:

    var DateRanges = new DateRanges {
        Label = "Last Week",
        Range = Lastweek
    };
    this.dateRange.Ranges.Add(DateRanges);

    DateRanges = new DateRanges {
        Label = "Last 1 Month",
        Range = Lastmonth
    };
    this.dateRange.Ranges.Add(DateRanges);

    DateRanges = new DateRanges {
        Label = "Last 2 Months",
        Range = Last2month
    };
    this.dateRange.Ranges.Add(DateRanges);

暫無
暫無

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

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