C# 这个代码块可以缩短吗?
我的代码中有下面的if语句,我想知道是否有缩短它的方法C# 这个代码块可以缩短吗?,c#,C#,我的代码中有下面的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;
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;
}
三元运算符是缩短此表达式的选项:
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。通常情况下,您会向用户报告输入错误。为了避免重复并保持可读性,您可以这样做
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);
同意,我会留下评论,但没有平庸的样品@亨克奥尔特曼