首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么C#7语法中的TryParse (空参数)在编译时会发出警告?

为什么C#7语法中的TryParse (空参数)在编译时会发出警告?
EN

Stack Overflow用户
提问于 2017-05-02 19:24:04
回答 1查看 1.4K关注 0票数 18

在C#7中,您可以执行以下操作

代码语言:javascript
复制
            if (int.TryParse("123", out int result)) 
                Console.WriteLine($"Parsed: {result}");

或者-如果您不使用结果,而只是想检查解析是否成功,则discard out值:

代码语言:javascript
复制
           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 _)的用法不受官方支持?到目前为止,我找不到任何提示。

为了完整起见,下面是显示该问题的控制台应用程序的代码:

代码语言:javascript
复制
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");
        }
    }
}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43736660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档