所以我有這些屬性,我想根據這些設定另一個:
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
private bool _hasDateRange;
我想_hasDateRange根據 StartDate 和 EndDate 是否不同于 null 將其設定為 true 或 false。
我想出的是這個,但它似乎不起作用;
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
private bool _hasDateRange;
public bool HasRange
{
get => _hasDateRange;
set
{
if (this.StartDate != null && this.EndDate != null)
{
this._hasDateRange = true;
}
else
{
this._hasDateRange = false;
}
}
}
uj5u.com熱心網友回復:
你想要一個只能獲取的屬性。為什么需要先呼叫 setter 來計算值?任何屬性的設定器都應該將特殊變數的值分配給屬性value的支持欄位,而不是忽略它。
您希望計算屬性的回傳值:
public bool HasRange
{
get
{
if (this.StartDate != null && this.EndDate != null)
{
return true;
}
else
{
return false;
}
}
}
支持欄位 ( _hasDateRange) 現在不再需要并且可以洗掉。
可以將多個歸約步驟應用于屬性的定義:
步驟1
public bool HasRange
{
get
{
return this.StartDate != null && this.EndDate != null;
}
}
第2步
public bool HasRange
{
get => this.StartDate != null && this.EndDate != null;
}
第 3 步
public bool HasRange => this.StartDate != null && this.EndDate != null;
uj5u.com熱心網友回復:
您可以使用只有 getter 的只讀屬性,而不是使用必須呼叫才能作業的 setter。在 getter 的代碼中,檢查其他屬性的值就可以了:
public bool HasRange
{
get => StartDate.HasValue && End date.HasValue;
}
每當HasRange請求 的值時,都會根據其他屬性對其進行評估,因此不會出現值不同步的情況
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/512684.html
