2011-08-20 152 views
-6

下面的代碼會產生編譯錯誤。代碼會產生編譯錯誤

string GetAgePhrase(int age) 
    { 
    if (age > 50) return "Naresh"; 
    if (age > 30) return "Ravi"; 
    if (age > 10) return "Nagendra"; 
    if (age > 9) return "Jagan"; 
    if (age > 2) return "Raja"; 
    } 

爲 函數的最後一行以下哪項陳述,插入,就可以解決這個問題?

+0

你的意思是什麼「後面的陳述」?請澄清 – alexm

+3

這不是讓您選擇作業或考試題目的地方。獲取代碼,嘗試編譯它,閱讀錯誤消息,並查看自己修復的內容。 –

+0

你可能不應該硬編碼這些值。一個數據庫表或甚至在你的配置文件中的條目將是一個更好的方式來做到這一點。這樣,當用戶想要區分70歲以上的人時,或者將30到50之間的空間劃分爲30/40和40/50之間的分隔符或更改其中一個名稱時,可以避免不可避免的更改帶來的問題。 –

回答

2

這段代碼的問題是並不是代碼的所有路徑都返回一個值......即,如果age是0,該怎麼辦?您可以通過在最後一條if語句return null之後添加以解決此問題,如果沒有條件滿足,它將始終具有返回值。

0

你的方法並不總是返回一個值,所以在所有的if語句之後只是一個默認的返回值。

string GetAgePhrase(int age) 
    { 
    if (age > 50) return "Naresh"; 
    if (age > 30) return "Ravi"; 
    if (age > 10) return "Nagendra"; 
    if (age > 9) return "Jagan"; 
    if (age > 2) return "Raja"; 

    return null; 
    } 
+0

是的,它會返回默認值。 – Naresh