當您創建,是爲了返回一個值的函數,你需要:如果有else部分被執行比你需要返回字符串值,但沒有返回有
的原因是以確保通過該函數的所有可能路徑最終返回一個值。
在你的情況下,沒有返回值,如果myreader[stval]
等於DBNull.Value
,因爲它會進入else
條款,簡單地下移,到函數結束,返回什麼:
public string Valid(OleDbDataReader myreader, int stval)
{
object val = myreader[stval];
if (val != DBNull.Value)
{
return val.ToString() ;
}
else
{
Convert.ToString(0);
}
}
我自己個人的看法是,這將更好的寫法如下:
public string Valid (OleDbDataReader myreader, int stval) {
object val = myreader[stval];
if (val != DBNull.Value)
return val.ToString() ;
return Convert.ToString(0);
}
換句話說,它往往是更好地在最後提供一個默認的情況下,保證這不可能發生。我畏縮,每當我看到形式的代碼:
if something:
return or exit
else:
do something else
,因爲它是不必要的複雜性,並可能導致正是那種在你的問題在這裏所描述的問題(以及縮進地獄)。好得多(再次,這是我的意見,但它有多年的經驗支持)使用更簡單:
if something:
return or exit
do something else
您認爲錯誤的含義是什麼? – thekip
@thekip並非所有的代碼路徑都返回一個值。 :) – 2011-09-08 06:37:39
你的'else .....'塊不會**返回任何值....這就是錯誤清楚說明的內容..... –