小编Tos*_*shi的帖子

NET 6 - 引用类型警告为空

在 NET 6 中,我有一个存储库异步返回字符串,该字符串可能源自 REST API 或文本文件。由于结果可能为 null,因此任务中的返回类型为可为 null 的字符串Task<string?>

public interface IFooRepository
{
    Task<string?> FetchAsync(string path);
}
Run Code Online (Sandbox Code Playgroud)

存储库的具体类之一如下所示:

public class FooRepository : IFooRepository
{
    public async Task<string?> FetchAsync(string path)
    {
        string? result = null;

        if (File.Exists(path))
        {
            result = await File.ReadAllTextAsync(path);
        }

        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

接下来,我添加了单元测试使用的模拟存储库类。这只是返回常量值。(显然,它永远不会返回 null。)

public class MockFooRepository : IFooRepository
{
    public Task<string?> FetchAsync(string path)
    {
        string? result = "ok!";
        return Task.FromResult(result);
    }
}
Run Code Online (Sandbox Code Playgroud)

添加模拟存储库后,我开始收到警告消息:

类型“Task”的值中引用类型的可为空性与目标类型“Task<string?>”不匹配。

为了处理警告,我不想使用预处理器指令隐藏警告消息#pragma warning disable CS8619。 …

c# nullable .net-6.0

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

标签 统计

.net-6.0 ×1

c# ×1

nullable ×1