今天在看到一段**,閒著沒事就敲了下來執行一下,
static void main(string args)
static void a(int a)
}不知道**來的想法將if(a<5)改為了if(true),完事之後編譯--執行了一下,是的,出現了下面的情況,丟擲了process is terminated due to stackoverflowexception.
這使我突然想起了前幾天在《visual c#2010 從入門到精通》上看到的一段話,這裡摘抄下來,以示警告,也順帶用正規的語言解釋一下上面的問題。
"雖然大家習以為常的一種做法是為屬性和private欄位賦予幾乎完全相同的名稱,兩個名稱只是首字母的大小寫有別,但應該關注這樣做的乙個缺陷。請看以下**,它實現了乙個名為employee(員工)的類。employeeid欄位是乙個private欄位,但employeeid屬性提供了對這個欄位的public訪問:
class employee
set
}上述**能成功通過編譯(這是不可能的,呵呵),但一旦訪問employeeid屬性,程式就會丟擲乙個stackoverflowexception異常。這是由於get accessor和set accessor引用的是屬性(大寫的e)而不是private欄位(小寫的e),所以會造成乙個無窮遞迴,最終造成程序耗盡所有可用的記憶體。這種因為乙個字母的大小寫而引發的bug是很難發現的!」
測試的同志們一定要多加注意啊!
可怕的階乘
計算階乘n 是一件可怕的事情,因為當n並不是很大時,n 將是乙個很大的值。例如13 6227020800,已經超過了我們常用的unsigned int型別的取值範圍。請設計乙個程式,使其可以計算100以內的數的階乘,結果用字串的形式輸出 詳細描述 介面說明 原型 void calcnn int n,...
可怕的階乘
計算階乘n 是一件可怕的事情,因為當n並不是很大時,n 將是乙個很大的值。例如13 6227020800,已經超過了我們常用的unsigned int型別的取值範圍。請設計乙個程式,使其可以計算100以內的數的階乘,結果用字串的形式輸出 詳細描述 介面說明 原型 void calcnn int n,...
可怕的需求
講乙個段子!另乙個團隊的主管跑來對我說 jeff,喔需要你修改這幾個功能。好的,沒有問題。我的回答很爽快,能告訴我這些修改都是解決哪些使用者的哪些問題嘛?她反問 這就是需求啊?我說 需求我已經收到了,能跟我講一講這些功能現在是哪些使用者在使用?使用者是怎麼使用這些功能完成自己的工作的?她看著我,就像...