使用dotnet 2.0。以下代码可以改进风格吗?
private object GetObj_Version1(int? num)
{
return num ?? (object)DBNull.Value;
}
演员对我来说有点乱。 下面的版本2避免了演员阵容,但其长篇大论:
private object GetObj_Version2(int? num)
{
object numObj;
if (num.HasValue)
numObj = num.Value;
else
numObj = DBNull.Value;
return numObj;
}
你能想到一个既短又避免演员阵容的替代方案? TIA。
答案 0 :(得分:6)
在这种情况下,强制转换在运行时不执行任何操作 - 它完全适用于编译器。如果你真的讨厌它,也许:
static readonly object NullObject = DBNull.Value;
private object GetObj_Version1(int? num)
{
return num ?? NullObject;
}
但我会自己离开。顺便说一句 - 因为无论如何你要打包它,你可以免除重载,只需使用object
- 那么你甚至不需要static
字段:
private object GetObj_Version1(object value)
{
return value ?? DBNull.Value;
}
答案 1 :(得分:0)
如果要将值插入数据库,则可以直接将可空类型作为过程参数传递。
param.Add("@Param1", nullableParam);