[英]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命名約定 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.