无法使用内联输出声明

Unable to use inline out declaration

我正在 VS2019 中创建新项目,目标为 .NET 4.7.1。 以下是我用于 out 参数内联声明的示例代码。

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            string a = "-1.5E5";
            bool b = decimal.TryParse(a, out d number);
        }
    }
}

然而,编译器抱怨:

The type or namespace name 'd' could not be found (are you missing a using directive or an assembly reference?)

为了使用 C# 7 功能,除了指定目标 4.7 之外还有什么特别的吗?

您必须定义类型或使用 var 关键字

    class Program
    {
        static void Main(string[] args)
        {
            string a = "-1.5E5";
            bool b = decimal.TryParse(a, out var  d );
        }
    }

ps。十进制解析-1.5E5会得到0,避免这种情况你可以使用double.Parse

你做错了。声明以这种方式工作:Type Name,并且您使用了 Name Type 和无效类型。你应该使用的是:

bool b = decimal.TryParse(a, out var d);

也允许使用decimal代替var,当然:)

我相信你做错了。 当您使用 TryParse 时,您确实像临时变量一样使用来传递 TryParse 的结果(如果成功)。

我的建议是:

bool result  = false;
bool question = decimal.TryParse(yourInputVar, out result);