【问题标题】:Unable to use primary constructor parameter无法使用主构造函数参数
【发布时间】:2014-12-02 09:26:05
【问题描述】:

我正在使用 C# 6.0 的新功能
我有以下代码行

public class Circle(int radius)
{
    public double circumference => 2 * 3.14 * radius;
}

以上代码不起作用并给出错误“当前上下文中不存在名称半径”

但是当我使用

public class Circle(int radius)
{
    int Radius = radius;
    public double circumference => 2 * 3.14 * Radius;
}

代码运行良好。
这是来自 VS 的某种错误作为其 CTP 还是我的代码有问题。因为我相信我应该能够在构造函数中使用主构造函数的参数,而无需将其设置为其他变量。

【问题讨论】:

标签: c#-6.0


【解决方案1】:

嗯,这可能无法直接回答您的问题,但主构造函数已从 C# 6.0 中撤消。

见:Changes to the language feature set 和这个问题:Primary constructors no longer compile in VS2015

您可能正在 Visual Studio 2014 CTP 中尝试您的代码。您需要下载并安装新版本的Visual Studio 2015 Preview。 (但首先你必须卸载 Visual Studio 2014 CTP)

您可能会看到最新消息:Languages features in C# 6 and VB 14

【讨论】:

    【解决方案2】:

    根据MSDN magazine article上的新语言功能:

    默认情况下,主构造函数参数不能在初始化器之外访问。

    所以你不能在任何方法中直接使用它们,你计算的 getter 是。

    【讨论】:

    • 但是你读到“表达式体成员”它说“我们可以在我们的类中拥有具有表达式体的成员”。在上述情况下,我应该能够在其范围内使用参数,这似乎是整个 Constructor 函数本身。
    • 我不确定我是否遵循。表达式主体成员只是语法糖,您仍然会得到一个方法,并且方法看不到主要的构造函数参数。你不再在构造函数中了,只是新的语法让它感觉像你在里面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 2011-10-08
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    相关资源
    最近更新 更多