Mer*_*ovi 26 .net c# .net-3.5 sqlparameter
我做的是这样的:
SqlParameter param = new SqlParameter("@Param", 0) { SqlDbType = SqlDbType.Int };
private void TestParam(SqlParameter param) {
string test = param.Value.ToString(); // Getting NullReferenceException here
}
Run Code Online (Sandbox Code Playgroud)
但是,当我这样说时,我停止获取异常:
SqlParameter param = new SqlParameter("@Param", SqlDbType.Int) { Value = 0 };
private void TestParam(SqlParameter param) {
string test = param.Value.ToString(); // Everything OK
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我为什么SqlParameter假设0与null相同?
编辑: MSDN在此解释:SqlParameter构造函数
sla*_*dau 50
使用SqlParameter构造函数的此重载指定整数参数值时请小心.因为此重载采用Object类型的值,所以当值为零时,必须将整数值转换为Object类型,如下面的C#示例所示.
Run Code Online (Sandbox Code Playgroud)Parameter = new SqlParameter("@pname", Convert.ToInt32(0));如果不执行此转换,编译器会假定您尝试调用SqlParameter(string,SqlDbType)构造函数重载.
谢谢Msdn :)
您传入的0是类型,而不是值.任何枚举类型允许0个文字(和常量值)- 意味着底层枚举类型的0,并且是比对象更好的"匹配",因为它不需要装箱.
就个人而言,我会用;
Value = 0
Run Code Online (Sandbox Code Playgroud)
也许在对象初始化器中.
| 归档时间: |
|
| 查看次数: |
9026 次 |
| 最近记录: |