在C#7中,您可以执行以下操作
if (int.TryParse("123", out int result))
Console.WriteLine($"Parsed: {result}");
或者-如果您不使用结果,而只是想检查解析是否成功,则discard out值:
if (int.TryParse("123", out _))
Console.WriteLine("Syntax OK");
这通常可以很好地工作,但在Visual Studio2017的第二个示例中,out
参数为空,会生成警告
分析器警告'Microsoft.CodeAnalysis.CSharp.Diagnostics.SimplifyTypeNames.CSharpSimplifyTypeNamesDiagnosticAnalyzer‘:
AD0001引发了类型为“System.NullReferenceException”的异常,并显示消息“”object reference not set to an object instance .“”。“
我可以验证它发生的Visual Studio版本是
Visual Studio企业版2017V15.1 (26403.7)发布
Visual Studio企业版2017V15.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");
}
}
}
https://stackoverflow.com/questions/43736660
复制相似问题