【问题标题】:Unable to initialize the automatic property in C#无法在 C# 中初始化自动属性
【发布时间】:2011-02-04 20:13:52
【问题描述】:

我有一个自动属性

public int GearCount { 获取;放; }

当我尝试像这样初始化它时-

串联 t = new Tandem(GearCount = 5);

报错如下

当前上下文中不存在名称“GearCount”

这里有什么问题吗? 另外,如果我进行正常的实例化,它也可以正常工作。 串联 t = new Tandem();

【问题讨论】:

  • 你的意思是 Tandem t = new Tandem() { GearCount = 5 }; ?
  • GearCountHasToolkit是什么关系?
  • 抱歉错字。我已经用 Gearcount 替换了 hastoolkit。

标签: c# asp.net .net-3.5


【解决方案1】:

我们需要您的其余代码

您向我们展示了一个名为 HasToolkit 的自动属性,但您遇到的问题与 HasToolkit 无关。

您的 Tandem 类上似乎没有名为 GearCount 的自动属性。

问题解决后,您可能只是遇到了一些语法问题。

如果你的 Tandem 类看起来像:

public class Tandem
{    
   public bool HasToolkit {get; set;}

   public int GearCount {get; set;}
}

那么你的初始化代码将是:

Tandem t = new Tandem() { GearCount = 5 };

或者:

Tandem t = new Tandem() { GearCount = 5, HasToolkit = true };

【讨论】:

  • 没问题。现在更新了,您改变了问题。
【解决方案2】:

这是因为该属性名为 HasToolKit 且类型为 bool,而不是名为 GearCount 且类型为 int

为此,您似乎还混合了构造函数和属性初始值设定项语法。您在调用案例中想要的是:

Tandem t = new Tandem {GearCount = 5};

Tandem 的定义需要包含以下内容:

public int GearCount { get; set; }

不太清楚HasToolKit 的含义。

【讨论】:

  • 非常感谢!!!!我非常感谢您的帮助。就像你说的,我实际上是在混淆构造函数语法和属性初始化语法
  • 很高兴能提供帮助。编码愉快!
【解决方案3】:

您声明的属性与您尝试在初始化程序中设置的属性名称或类型不同。另外,当你想使用初始化器时,你需要使用大括号而不是括号:

var t = new Tandem{ HasToolKit = true };

【讨论】:

  • 谢谢!!我的错误,这是一个错字..现在已经解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-30
  • 1970-01-01
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
相关资源
最近更新 更多