在 C#7 中,你可以这样做
if (int.TryParse("123", out int result))
Console.WriteLine($"Parsed: {result}");
或者 - 如果您不使用结果而只想检查解析是否成功,discard https://learn.microsoft.com/en-us/dotnet/csharp/discards输出值:
if (int.TryParse("123", out _))
Console.WriteLine("Syntax OK");
通常情况下效果很好,但在 Visual Studio 2017 中,第二个示例中out
参数为空,生成警告
警告 AD0001:分析器“Microsoft.CodeAnalysis.CSharp.Diagnostics.SimplifyTypeNames.CSharpSimplifyTypeNamesDiagnosticAnalyzer”引发“System.NullReferenceException”类型的异常,并显示消息“对象引用未设置为对象的实例。”。
我可以验证它是否发生的 Visual Studio 版本是
Visual Studio Enterprise 2017 版本 15.1 (26403.7) 发布
Visual Studio Enterprise 2017 版本 15.2 (26430.4) 发布
这是一个错误,还是使用int.TryParse("123", out _)
没有官方支持?到目前为止我找不到任何提示。
为了完整起见,以下是显示问题的控制台应用程序的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
if (int.TryParse("123", out _))
Console.WriteLine("Syntax OK");
}
}
}