【发布时间】:2011-09-14 01:30:09
【问题描述】:
谁能告诉我为什么下面的第一个语句会引发编译错误而第二个不会?
NewDatabase.AddInParameter(NewCommand, "@SomeString", DbType.String, SomeString ?? DBNull.Value); // <-- Throws compilation error!
NewDatabase.AddInParameter(NewCommand, "@SomeString", DbType.String, (object)(SomeString) ?? DBNull.Value); // <-- Compiles!
我尝试了其他可以为空的类型,例如byte?,得到了相同的结果。谁能告诉我为什么我需要先转换为对象?
【问题讨论】:
-
编译错误究竟是什么?
NewDatabase.AddInParameter的签名是什么? -
签名是
void AddInParameter(DbCommand, string, DBType, object)。编译错误是“运算符'??'不能应用于“字符串”和“System.DBNull”类型的操作数”。
标签: c# .net casting nullable null-coalescing-operator