[英]Exception when defining the properties of a class
我正在使用VS在C#中開發數據庫應用程序。 我有一個稱為Crew的類,並且有自己的字段,例如名稱,出生日期等。我希望用戶指定一些字段,而其他字段則由應用程序本身自動計算/確定。 如年齡從出生之日算起。 這是我的做法:
[Required]
[DisplayName("Date of Birth")]
public DateTime DOB
{
set { }
get { return DOB.Date; }
}
public int Age
{
get { return Convert.ToInt32(DateTime.Now.Year) - Convert.ToInt32(DOB.Year); }
}
在調試時,我填寫了一個人的字段,然后單擊“創建”按鈕以保存到數據庫,但是出現以下異常:
發生System.StackOverflowException HResult = 0x800703E9消息=拋出了類型為'System.StackOverflowException'的異常。
在DOB
,您引用DOB
。 現在,它已經進入了吸氣DOB
,它引用DOB
。 所以它必須訪問DOB
....
嘗試獲取屬性值時,屬性無法訪問自身,否則您將進入無限循環並獲取SO異常。 您可以通過擁有一個存儲值的private
后備字段來解決此問題,然后在屬性getter中對其進行訪問:
private DateTime _dob;
public DateTime DOB
{
get { return _dob; }
set { _dob= value; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.