C# NET中的可空类型
复述者说1和2子句总是错误的。但是为什么呢?如果C# NET中的可空类型,c#,.net,C#,.net,复述者说1和2子句总是错误的。但是为什么呢?如果值是对象,并且为空,那么它是什么类型的?它没有类型 您有一个object类型的变量,它不包含任何内容。无法知道其他人可能计划在该变量中放置什么 或者,答案是: 这就好比问什么样的蛋糕会被放在一个没有标签的空盒子里 如果值是对象,并且为空,那么它是什么类型的?它没有类型 您有一个object类型的变量,它不包含任何内容。无法知道其他人可能计划在该变量中放置什么 或者,答案是: 这就好比问什么样的蛋糕会被放在一个没有标签的空盒子里 如果值为null
值
是对象,并且为空,那么它是什么类型的?它没有类型
您有一个object类型的变量,它不包含任何内容。无法知道其他人可能计划在该变量中放置什么
或者,答案是:
这就好比问什么样的蛋糕会被放在一个没有标签的空盒子里
如果值
是对象
,并且为空,那么它是什么类型的?它没有类型
您有一个object类型的变量,它不包含任何内容。无法知道其他人可能计划在该变量中放置什么
或者,答案是:
这就好比问什么样的蛋糕会被放在一个没有标签的空盒子里
如果值为null,则无法从中推断出比对象
更复杂的类型,因此它永远不能是int?
或Guid?
如果值为null,则无法从中推断出比对象
更复杂的类型,因此,它不能是int?
或Guid?
这应该可以:
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;
//....................
}
这应该起作用:
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;
//....................
}
如果提供的表达式为非null,则is表达式的计算结果为true。因此,表达式(value为int?&&value==null)始终等于false如果提供的表达式为非null,则is表达式的计算结果为true。因此,表达式(value为int?&&value==null)总是等于false@Jaimal Chohan,不,它不是Resharper bug。这是一个非常有效的警告。相反@Jaimal。。。Resharper是对的。看起来你需要一份副本。。。它教会了你很多。也许在你的方法中使用泛型?@Jaimal Chohan,不,它不是一个Resharper bug。这是一个非常有效的警告。相反@Jaimal。。。Resharper是对的。看起来你需要一份副本。。。它教会了你很多。也许在你的方法中使用泛型?这应该是一个注释。这不是一个答案。事实上,更改了答案并添加了注释。这应该更有效:if(value==null&&skipmpty)返回null;skipEmpty会改变一切,所以你应该首先评估它。这应该是一个注释。这不是一个答案。事实上,更改了答案并添加了注释。这应该更有效:if(value==null&&skipmpty)返回null;技能改变了一切,所以你应该首先评估它。