2016-04-01 5 views

答えて

6

それを短くする方法があるかどうかを知りたいの三項演算子は、この表現を短縮するためのオプションです:

komut.Parameters.Add("@kısakod", SqlDbType.SmallInt, 5).Value = 
    !string.IsNullOrEmpty(ürün_kısakod.Text) 
    ? (object)Int16.Parse(ürün_kısakod.Text) 
    : DBNull.Value 
    ; 

より良い選択はTryParseも使用することです。通常、入力が間違っていたことをユーザーに報告します。

+0

同意、私がコメントを残したが、MEDなしますiocreサンプル。 @HenkHolterman –

2

繰り返しを避けるため、まだ読めるようあなたが

object val; 
if (String.IsNullOrEmpty(ürün_kısakod.Text)) { 
    val = Int16.Parse(ürün_kısakod.Text); 
} else { 
    val = DBNull.Value; 
} 

komut.Parameters.Add("@kısakod", SqlDbType.SmallInt, 5).Value = val; 

を行うことができますし、他の場所で同様のことを行う可能性が高いでしょうから、それは機能します(そして、あなたもしたい場合は、整数幅に基づいて、それが一般的なようにするには):

object ParseInt16OrDbNull(string text) { 
    if (String.IsNullOrEmpty(text)) { 
     return Int16.Parse(text); 
    } else { 
     return DBNull.Value; 
    } 
} 

そして、あなたのコードは、単に次のようになります。

komut.Parameters.Add("@kısakod", SqlDbType.SmallInt, 5).Value = ParseInt16OrDbNull(ürün_kısakod.Text); 
関連する問題