在VS2015上声明参数变量时,'out'或'ref'关键字不起作用

时间:2017-04-11 13:44:16

标签: c# visual-studio-2015

正如标题所示,out关键字和ref关键字似乎不适用于 VS2015 ,除System类型以外的类型作为参数

e.g。

public MyType Get(string key)
        {
            return _list.TryGetValue(key, out MyType myVariable) ? myVariable : null;
        }

这不会给我 VS2017 上的错误,但会在 VS2015 上发生错误。在 VS2015 上,由于它将类型MyType视为变量,因此会出现语法错误。

有关如何解决此问题的任何想法?

更新

我将标题更改为“'out'或'ref'关键字不能用作VS2015上非系统类型的参数”至“'out'或'ref'关键字在VS2015上声明参数变量时不起作用“。

此外,我认为这适用于System类型,例如int,这是不正确的。它与使用的类型无关。

4 个答案:

答案 0 :(得分:4)

您使用的是C# 7.0

specific feature

在VS2015中,您最有可能是C# 6.0

c# 7.0之前,您必须先声明out变量,然后才能将其用作out参数

在任何给定的C#项目中,转到

  

属性 - >构建 - >高级... - >语言版本

答案 1 :(得分:1)

声明内联out变量是C#7.0功能。

在C#6.0及以下版本中,你必须使用它:

public MyType Get(string key)
{
    MyType myVariable;
    return _list.TryGetValue(key, out myVariable) ? myVariable : null;
}

答案 2 :(得分:0)

这是一个C#7.0功能。如果要使用Visual Studio 2015进行编译,则必须采用传统方式进行编译。

public MyType Get(string key) {
    MyType variable;
    return _list.TryGetValue(key, out myVariable) ? myVariable : null;
}

答案 3 :(得分:0)

这是c#7中的新功能 Visual Studio 2015使用c#6不支持声明这样的变量。

检查here

  

在C#7.0中,我们添加变量;能够在变量作为out参数传递的位置声明变量