頁:
[1]
無限迴圈..?
各位大大好小弟目前在寫計算平均的程式
這是老師秀出來的部分範例程式
不過我照著打
卻發生
想請各位大大指點哪裡可能出錯...因為執行前也沒有紅線阿...
<div></div> 本帖最後由 inunu 於 2016-3-24 04:43 AM 編輯
假設你用了:
Student a = new Student();
a.Name = "John";
它會去呼叫 Name 的 setter 沒錯
我們把時間停在剛進入 setter 程序的當下:
set
{
// 從這開始執行
this.Name = value;
}
下一句是 Name = value; 是寫數值到屬性, 又會叫一次屬性的 setter
也就是這個 setter 會一直呼叫自己, 形成無限迴圈
所以最後爆堆疊出 exception
你老師的版本不會, 是因為他寫的是 name (注意大小寫) 欄位
欄位沒有 setter 可觸發...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div> 老師寫的明明是 this.name 你卻寫成 this.Name 當然就錯掉了
this.name 是代表那個 private string name
this.Name 是你自己這 public string Name
重點就是... c# 是否分大小寫的.. C#變數與函數的名稱是大小寫的
只要名稱中間有一字母的大小寫不一樣
兩個變數視為不同 其實我個人建議如果這種屬性類的東西,沒有要傳遞別的值,或者做運算的話
直接寫一行
public string tmpString { get;set;}
這樣就好了,比較不會有問題
然後變數請不要使用到系統預留字,會出現無法編譯or奇奇怪怪的錯誤
系統預留字可參考MSDN
https://msdn.microsoft.com/zh-tw/library/x53a06bb.aspx<br><br><br><br><br><div></div>
頁:
[1]