Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查参数是否为Null_C#_.net_Nullable - Fatal编程技术网

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
    的结果已经是布尔值。

    它怎么可能是null
    int
    是一种值类型。必须使用可为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
    ,那么它永远不能为空,所以验证器是没有意义的。