修复数据库调用后返回的数据的空警告
Fixing null warnings on data returned after a database call
由于其他工作承诺,我已经离开 C# 编程几年了,并试图重新回到最繁重的事情中。
上次我写了下面的代码是允许的,没有给我任何警告:
public async Task<User> GetAsync(string userId)
{
User user = null;
using (SqlConnection connection = sqlObjectFactory.GetConnection())
{
using (SqlCommand command = sqlObjectFactory.GetCommand("SELECT FirstName, LastName FROM Users WHERE UserId = '12345678';", connection))
{
await connection.OpenAsync();
using SqlDataReader reader = await command.ExecuteReaderAsync();
if (await reader.ReadAsync())
{
user = new User
{
FirstName = reader.GetString("FirstName"),
LastName = reader.GetString("LastName")
};
}
}
}
return user;
}
但是下面的代码行有警告:
User user = null;
Warning: Converting null literal or possible null value to non-nullable type.
还有..
return user;
Warning: Possible null reference return.
我不太确定如何修复这些警告?我的意思是只能有 2 个可能的值 returned,找到用户然后 return 用户的详细信息,或者如果没有找到用户然后 return nothing/null 返回。
此处的最佳做法是什么?请大家指点一下好吗?
我知道很多代码都可以简化,但我们不要专注于此,为了 post,我只是快速地把一些东西放在一起。我也知道你可以关闭警告,但我喜欢它们,所以我不想关闭它们。
我正在使用 Visual Studio 2022.
引用类型(例如您的 User 对象)已默认变为 non-nullable (https://docs.microsoft.com/en-us/dotnet/csharp/nullable-references)。这意味着如果不明确声明它们可以为空,它们就不能再包含空值。
你能做的是return用户?从你的功能(注意问号)。添加问号表示变量可以为空。将您的函数重命名为 TryGetAsync 可能是合适的,让调用者知道 null allowance。
由于其他工作承诺,我已经离开 C# 编程几年了,并试图重新回到最繁重的事情中。
上次我写了下面的代码是允许的,没有给我任何警告:
public async Task<User> GetAsync(string userId)
{
User user = null;
using (SqlConnection connection = sqlObjectFactory.GetConnection())
{
using (SqlCommand command = sqlObjectFactory.GetCommand("SELECT FirstName, LastName FROM Users WHERE UserId = '12345678';", connection))
{
await connection.OpenAsync();
using SqlDataReader reader = await command.ExecuteReaderAsync();
if (await reader.ReadAsync())
{
user = new User
{
FirstName = reader.GetString("FirstName"),
LastName = reader.GetString("LastName")
};
}
}
}
return user;
}
但是下面的代码行有警告:
User user = null;
Warning: Converting null literal or possible null value to non-nullable type.
还有..
return user;
Warning: Possible null reference return.
我不太确定如何修复这些警告?我的意思是只能有 2 个可能的值 returned,找到用户然后 return 用户的详细信息,或者如果没有找到用户然后 return nothing/null 返回。
此处的最佳做法是什么?请大家指点一下好吗?
我知道很多代码都可以简化,但我们不要专注于此,为了 post,我只是快速地把一些东西放在一起。我也知道你可以关闭警告,但我喜欢它们,所以我不想关闭它们。
我正在使用 Visual Studio 2022.
引用类型(例如您的 User 对象)已默认变为 non-nullable (https://docs.microsoft.com/en-us/dotnet/csharp/nullable-references)。这意味着如果不明确声明它们可以为空,它们就不能再包含空值。
你能做的是return用户?从你的功能(注意问号)。添加问号表示变量可以为空。将您的函数重命名为 TryGetAsync 可能是合适的,让调用者知道 null allowance。