我的代码中有以下if语句,我想知道是否有办法缩短它
if (ürün_kısakod.Text != "")
{
komut.Parameters.Add("@kısakod", SqlDbType.SmallInt, 5).Value = Int16.Parse(ürün_kısakod.Text);
}
else
{
komut.Parameters.Add("@kısakod", SqlDbType.SmallInt, 5).Value = DBNull.Value;
}
答案 0 :(得分: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
。通常您会向用户报告输入错误。
答案 1 :(得分: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);