相关疑难解决方法(0)

"x is null"和"x == null"之间有什么区别?

在C#7中我们可以使用

if (x is null) return;
Run Code Online (Sandbox Code Playgroud)

代替

if (x == null) return;
Run Code Online (Sandbox Code Playgroud)

使用新方法(前一个例子)比旧语法有什么好处吗?

语义学有什么不同?

只是品味问题?如果没有,何时使用一个或另一个.

参考.

.net c# null pattern-matching c#-7.0

219
推荐指数
3
解决办法
3万
查看次数

检查C#中的对象是否为null

我想阻止对象的进一步处理,如果它是null.

在下面的代码中,我通过以下任一方法检查对象是否为null:

if (!data.Equals(null))
Run Code Online (Sandbox Code Playgroud)

if (data != null)
Run Code Online (Sandbox Code Playgroud)

不过,我收到NullReferenceExceptiondataList.Add(data).如果对象为null,则它应该永远不会进入if-statement!

因此,我问这是否是检查对象是否为null的正确方法:

public List<Object> dataList;
public  bool AddData(ref Object data)
    bool success = false;
    try
    {
        // I've also used "if (data != null)" which hasn't worked either
        if (!data.Equals(null))
        {
           //NullReferenceException occurs here ...
           dataList.Add(data);
           success = doOtherStuff(data);
        }
    }
    catch (Exception e)
    {
        throw new Exception(e.ToString());
    }
    return success;
}
Run Code Online (Sandbox Code Playgroud)

如果这是检查对象是否为null的正确方法,那么我做错了什么(如何防止对对象进一步处理以避免NullReferenceException)?

c# null nullreferenceexception

196
推荐指数
11
解决办法
78万
查看次数

在C#虚拟方法中,"this"可以为null吗?其他实例方法会发生什么?

我很好奇是否有一种方法this可以在C#中的虚方法中为null.我认为这是不可能的.我在现有代码中看到,在代码审查期间,我希望100%肯定对其删除进行评论,但我想要一些确认和社区的更多上下文.this != null在任何非静态/实例方法中都是这种情况吗?否则它会是一个空指针异常对吗?我正在考虑扩展方法以及我可能不熟悉多年Java的C#特性.

c# il this c#-4.0

13
推荐指数
3
解决办法
1728
查看次数

(any == System.DBNull.Value)vs(any is System.DBNull)

有没有人喜欢如何检查一个值是DBNull什么?我发现这两个陈述给了我想要的结果,但只是想知道是否有偏好?

if (any is System.DBNull)

与...一样:

if (any == System.DBNull.Value)

谢谢!

.net null dbnull

10
推荐指数
3
解决办法
5330
查看次数

如何将对象同时为null并且不为null?

所以我有这段代码,如果我在return语句上断点,立即窗口输出下面的信息.

try
{
    await connection.OpenAsync();
    var obj = await cmd.ExecuteScalarAsync();
    return obj != null ? Int32.Parse(obj.ToString()) != 1 : false;
}
catch (Exception ex)
{
    Log.Error("An error has occurred checking a customer/product authorization.", ex);
    return false;
}
finally
{
    connection.Close();
}
Run Code Online (Sandbox Code Playgroud)

存储过程 以下是存储过程的相关部分.@HasAuthTable和@IsAuthorized属于这种类型bit.

SELECT (CASE WHEN @HasAuthTable = 0 THEN 1 ELSE 0 END) | @IsAuthorized AS IsAuthorized
Run Code Online (Sandbox Code Playgroud)

即时窗口

obj
0

obj == null
false

obj != null
false

obj == 0
error CS0019: …
Run Code Online (Sandbox Code Playgroud)

c# c#-6.0 visual-studio-2015

5
推荐指数
1
解决办法
614
查看次数