首页
学习
活动
专区
工具
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

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-04 19:41:11

我向开发团队提交了bug request (request #19180),他们确认这是一个bug。您可以在此处查看整个状态at GitHub dotnet/roslyn.

Pilchie在16小时前发表了评论

我可以在15.2中重现,但不能在15.3中重现。转到基于堆栈的编译器,>但我很确定这是一个骗局。@jcouv?

jcouv在16小时前发表了评论

是的,这是一个副本( #17229,也可能是另一个)。它已在dev15.3 (#17544)中修复,不幸的是,我们无法将>修复添加到dev15.2中。感谢@Matt11提交问题,并为bug道歉。

据我所知,它似乎已经修复,并将在下一次更新中可用。但微软并没有宣布何时将其包括在内,因此我通过Visual Studio 2017中的“发送反馈/报告问题”提交了一个问题。

备注:

  • 该问题不仅限于TryParse。我验证了如果您编写自己的函数,也会发生这种情况,即下面的示例也显示了警告AD0001:

static void Main(string[] args) { bool myOutDemo(string str,out int result) { result = (str??"").Length;return result > 0;} //丢弃out参数if (myOutDemo("123",out _)) Console.WriteLine("String not empty");}

  • 我注意到现在有一个VS版本15.3预览版,它应该包含GitHub评论中提到的修复。请查看以下链接:Visual Studio 2017 Version 15.3 Preview。安装后,我再次验证了该问题,并可以确认该问题已在那里得到解决。

感谢所有参与上述讨论的人!(问题评论)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43736660

复制
相关文章

相似问题

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