protected static SqlParameter CreateParameter(string name, object value, bool skipEmpty, bool isOutput =false)
{
if (skipEmpty && value is string && string.IsNullOrEmpty((string)value))
return null;
//1
if (skipEmpty && value is int? && value == null)
return null;
//2
if (skipEmpty && value is Guid? && value == null)
return null;
//....................
}
resharper说1和2条款总是假的。但为什么呢?
答案 0 :(得分:6)
如果value为null,则无法从中推断出比object
更复杂的类型,因此它永远不会是int?
或Guid?
答案 1 :(得分:3)
如果value
是object
,并且为空,它是什么类型的?它没有类型。
你有一个类型为object的变量,它不包含任何内容。没有办法知道其他人可能计划在该变量中放置什么。
或者C# get type of null object的回答是:
这就像问一个没有标签的空盒子里会有什么样的蛋糕。
答案 2 :(得分:2)
如果提供的表达式为非null,则 表达式的计算结果为true。因此,表达式(值为int?&& value == null)始终等于false
答案 3 :(得分:1)
这应该有效:
if (skipEmpty && ((value is string && string.IsNullOrEmpty((string)value)) || value == null)) return null;