短路如果条件不起作用

Kas*_*oda -7 c# exception nullreferenceexception

我有一个抛出NullReferenceException的代码段.代码段就是这样的.

if (string.IsNullOrWhiteSpace(user.FirstName) && !(user.FirstName.Length <= 64))
{
    // Some Code
}
Run Code Online (Sandbox Code Playgroud)

这里if条件首先要检查是否user.FirstName为Null或WhiteSpace.当值为user.FirstNamenull时,此代码段抛出一个NullReferenceException.我假设通过检查Lengthof 来抛出这个user.FirstName,但由于这是一个短路检查,因此第一个表达式不应满足条件并执行if块内的代码.或者我在这里遗漏了一些东西.

Glo*_*del 5

第二部分仅在执行时执行

string.IsNullOrWhiteSpace(user.FirstName)
Run Code Online (Sandbox Code Playgroud)

结果是真的.所以你需要

!string.IsNullOrWhiteSpace(user.FirstName) && !(user.FirstName.Length <= 64)
Run Code Online (Sandbox Code Playgroud)

要么

string.IsNullOrWhiteSpace(user.FirstName) || !(user.FirstName.Length <= 64)
Run Code Online (Sandbox Code Playgroud)

根据您的要求.此外,user可能是null在这种情况下,短路将于事无补.