DBNull 转换为 (object) returns 不同的值
DBNull cast to (object) returns different value
当 C# 方法的可选参数(string
)为 null
.
时,我正在尝试使用 Parameters.AddWithVallue
编写 DBNull.Value
public static void Abc(string distrito, string municipio = null)
command.Parameters.AddWithValue("@Municipio", municipio ?? (object)DBNull.Value);
command.Parameters.AddWithValue("@Municipio", municipio.Length > 0 ? municipio : (object)DBNull.Value);
但是,(object)DBNULL
returns 两个不同的值以两种不同的 工作 方式。一个写 empty/null 和另一个 NULL.
我将做一些假设,但我想我知道发生了什么。 municipio
可能是一个空字符串。 不是 null。
在那种情况下,municipio ?? (object)DBNull.Value
将是一个空字符串,不是 null。但是,municipio.Length > 0 ? municipio : (object)DBNull.Value
的值为DBNull.Value
,这将在SQL Server 中生成一个空值。在这种情况下,如果 municipio
为 null,则此代码将抛出。既然你说代码运行,我假设 municipio
不为空。
当 C# 方法的可选参数(string
)为 null
.
Parameters.AddWithVallue
编写 DBNull.Value
public static void Abc(string distrito, string municipio = null)
command.Parameters.AddWithValue("@Municipio", municipio ?? (object)DBNull.Value);
command.Parameters.AddWithValue("@Municipio", municipio.Length > 0 ? municipio : (object)DBNull.Value);
但是,(object)DBNULL
returns 两个不同的值以两种不同的 工作 方式。一个写 empty/null 和另一个 NULL.
我将做一些假设,但我想我知道发生了什么。 municipio
可能是一个空字符串。 不是 null。
在那种情况下,municipio ?? (object)DBNull.Value
将是一个空字符串,不是 null。但是,municipio.Length > 0 ? municipio : (object)DBNull.Value
的值为DBNull.Value
,这将在SQL Server 中生成一个空值。在这种情况下,如果 municipio
为 null,则此代码将抛出。既然你说代码运行,我假设 municipio
不为空。