首页 > 解决方案 > 如何防止自定义 TryParse 方法出现可能的空引用警告?

问题描述

以这样的方法为例:

public static bool TryParse(string input, out Tuple<TimeSpan, TimeSpan>? timeSpanPair)
{
    // conversion code here
}

它遵循“Try”模式,但是如何做到这一点,以便在使用它时不会收到潜在的空引用警告?

if(TryParse("test data", out var output)
{
   Console.WriteLine(output.ToString()); // possible null reference!
}
else
{
   Console.WriteLine("there was an error!");
}

经过一番搜索,我偶然发现了这个答案,所以我决定发布一个答案,以便更容易找到。希望它可以帮助某人!

标签: c#.net

解决方案


如果您使用 ,NotNullWhenAttribute您可以定义该值何时不为空,即使它被标记为可为空。

例如:

using System.Diagnostics.CodeAnalysis;

...

public static bool TryParse(string input, [NotNullWhen(true)] out Tuple<TimeSpan, TimeSpan>? timeSpanPair)
{
    // conversion code here
}

if然后,如果将结果包装在语句中,您的结果将不再为您提供可能的空引用消息!


推荐阅读