iT邦幫忙

0

C# 判斷屬性時要用value? (跳出stack overflow)

大家好!!
小弟我現在是自學C#的小菜雞
想問個問題
為啥在判斷屬性的時候,要用value啊,為何這樣寫if判斷,他會跳出stack overflow~
https://ithelp.ithome.com.tw/upload/images/20200624/20128186ObADoolScQ.png
https://ithelp.ithome.com.tw/upload/images/20200624/20128186yj4wNED2Qt.png

1 個回答

8
海綿寶寶
iT邦大神 1 級 ‧ 2020-06-24 11:09:45
最佳解答

根據這篇的解釋
如果這麼寫就會 Stack overflow

private int _salary
public int salary
{
   get
   {
      return _salary;   
   }
   set
   {
      salary = value;
   }
}

原因是salary = value會呼叫 salary 的 set method
而 set method 裡又執行salary = value
結果就是無窮迴圈然後就爆了 stack overflow

正確寫法應該是
set : 將 value 指定給 private attribute _salary
get : return private attribute _salary

private int _salary
public int salary
{
   get
   {
      return _salary;   
   }
   set
   {
      _salary = value;
   }
}
Billour iT邦新手 5 級 ‧ 2020-06-24 11:15:51 檢舉

認同+1

yonghong iT邦新手 5 級 ‧ 2020-06-24 11:30:03 檢舉

我懂了,我好蠢
感謝解惑!!

我懂了,我好蠢

不要這麼想
只要是,當然是學自己不會/不懂的知識
了就
/images/emoticon/emoticon13.gif

我要發表回答

立即登入回答