は、あなたが必要ですが、他の部分は、あなたが文字列値を返すために必要以上に実行されますが、そこにはリターンがないされている場合
理由がありますその関数を通るすべての可能なパスが最終的に値を返すようにします。それは何も返さない、else
句を入力して、単純に関数の終わりに至るまで低下しますので、myreader[stval]
がDBNull.Value
に等しい場合は、あなたの場合は
は、何の値が返されません。
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すべてのコードパスが値を返すわけではありません。 :) –
あなたの 'else .....'ブロックは何も返しません**エラーは明らかにエラーの内容です..... –