C#:空警告,即使这是不可能的
C#: null warning even though it's not possible
好的,我这里有这个函数,在某些情况下可以 return 一个空值。但是,即使在测试之前,它仍然说它可能是空的。
我的代码:
if (Account.FindAccount(usernameInput) == null) { return; }
if (Account.FindAccount(usernameInput).password == "1234") // warning CS8602: Dereference of a possibly null reference
{
//Do stuff
}
那个FindAccount
操作保证是幂等的吗?编译器没有这样的保证。它在一个调用中 return 的内容在另一个调用中可能不是 return。
更重要的是...如果您相信对于相同的输入它总是return相同的结果,为什么要调用它两次?只需调用一次并存储结果:
var account = Account.FindAccount(usernameInput);
if (account == null) { return; }
if (account.password == "1234")
{
//Do stuff
}
好的,我这里有这个函数,在某些情况下可以 return 一个空值。但是,即使在测试之前,它仍然说它可能是空的。
我的代码:
if (Account.FindAccount(usernameInput) == null) { return; }
if (Account.FindAccount(usernameInput).password == "1234") // warning CS8602: Dereference of a possibly null reference
{
//Do stuff
}
那个FindAccount
操作保证是幂等的吗?编译器没有这样的保证。它在一个调用中 return 的内容在另一个调用中可能不是 return。
更重要的是...如果您相信对于相同的输入它总是return相同的结果,为什么要调用它两次?只需调用一次并存储结果:
var account = Account.FindAccount(usernameInput);
if (account == null) { return; }
if (account.password == "1234")
{
//Do stuff
}