C# 检查参数是否为Null
我正在尝试创建一个方法来确定我的C# 检查参数是否为Null,c#,.net,nullable,C#,.net,Nullable,我正在尝试创建一个方法来确定我的id参数是否为null。如果参数为空,则应返回true。如果id参数有值,则应返回false 这似乎相当直截了当,但我似乎无法让它发挥作用 Resharper有两个备注: 表达总是错误的 冗余条件三元表达式用法 我的方法: public bool IsPersonIdNull(int id) { return id == null ? true : false; } 这是因为只有引用类型可以被null引用int是一种值类型。因此,默认情况下它是0一个in
id参数
是否为null。如果参数
为空,则应返回true。如果id参数
有值,则应返回false
这似乎相当直截了当,但我似乎无法让它发挥作用
Resharper有两个备注:
public bool IsPersonIdNull(int id)
{
return id == null ? true : false;
}
这是因为只有引用类型可以被
null
引用int
是一种值类型。因此,默认情况下它是0
一个int
永远不能为空(尽管它可以是0)。这更有意义:
public bool IsPersonIdNull(int? id)
{
return id == null;
}
这里不需要三元运算符,因为
id==null
的结果已经是布尔值。它怎么可能是nullint
是一种值类型。必须使用可为null的int作为参数,如下所示:
public bool IsPersonIdNull(int? id)
{
}
然后,您可以通过以下属性检查它是否具有值:
if (id.HasValue) {
}
或者简单地使用内联返回:
return id == null;
您还可以为任何类型创建泛型方法:
public bool IsPersonIdNull<T>(T instance)
{
return instance == default(T);
}
public bool IsPersonIdNull(T实例)
{
返回实例==默认值(T);
}
int
是一个结构。结构不能为null.int或bool不能为null(字符串等对象不适用)。如果希望id为空,请声明“int?id”。第二条注释是因为表达式本身返回bool,因此您不需要三元数来选择true或false,而不管int
或int?
是否混淆。在询问问题之前,请尝试搜索错误消息,作为调查的一部分。除了C#/VS:and之外,微软还为此提供了搜索引擎。您会在if
语句中加入什么逻辑?@CodeChaser-返回false
或者您可以使用返回id==null代码>如我在回答中所示。此解决方案无法正常工作。我希望IsPersonIdNull
方法以这种方式处理所有逻辑,我可以在我的验证器上调用它。你还有其他想法吗?@CodeChaser-你还没有把所有的逻辑都放在你的问题中……谢谢你的回答,但是这个解决方案工作不正常。我希望IsPersonIdNull
方法以这种方式处理所有逻辑,我可以在我的验证器上调用它。你还有其他想法吗?好吧,如果你的id
确实是int
,那么它永远不能为空,所以验证器是没有意义的。