В С# 7 вам разрешено делать
if (int.TryParse("123", out int result))
Console.WriteLine($"Parsed: {result}");
или - если вы не используете результат и просто хотите проверить, успешно ли выполняется анализ, отбросьте значение out:
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");
}
}
}