抽象类和虚方法:无法访问某些变量

时间:2012-10-19 19:46:41

标签: c#

我正在使用抽象类和虚方法。目前我有一个窗口表单,由一个按钮单击和两个多行文本框组成,我在其中显示结果。基类有一个默认构造函数和一个构造函数,它接受基类所需的所有必要数据。有两个类TreesTomatoes具有默认构造函数和传递所有数据的构造函数。我能够在textBox1中显示项namenumber in stockprice

但是,我无法调用Trees名为tree_height的高度变量和Tomatoes大小以及名为tomatoes_perplat和{{1 }}。它给我的错误不包含这些变量的定义。我该如何解决这个问题?

CODE

tomatoes_size

3 个答案:

答案 0 :(得分:4)

好的,现在我的代码有点编译,更清楚......

您无法访问trees1.tree_height,因为它在Trees类中是私有的,并且您尝试从Form1类中的方法访问它。

您无法从该方法访问tomatos_perplat,因为Tomatoes类中没有此类变量 - 有tomatoesinpat,但这也是私有的。

同上tomatoes_size - 该字段名为sizeoftomato,并且是私有的。

保持您的字段隐私是的想法 - 我不建议将它们公开。相反,您应该公开properties以在类之间公开数据。您可以使用automatically implemented properties作为实现非常简单的属性的简单方法。

强烈鼓励您为您的组织工作:

  • 不要将嵌套类用于所有内容;它们偶尔会很方便,但通常最好有单独的顶级课程

  • 阅读.NET naming conventions并按照

  • 进行操作
  • 想想你的方法想要实现的目标 - 目前你的Get_Value方法毫无意义

  • 敦促您尝试使用控制台应用程序。它们比GUI更“令人兴奋”,但是 更容易理解和试验。

答案 1 :(得分:1)

您在类中定义了fields未指定access modifier的内容。默认情况下,这些字段将是私有的。

您应该使用public properties来公开这些字段。您还应该考虑auto-implemented properties

答案 2 :(得分:1)

这将解决它:

public string sizeoftomato;             
public int tomatoesinpat;

默认情况下,这些字段是私有

请注意,字段通常不适合您正在执行的操作。你真的想要属性:

public string SizeOfTomato { get; set; }
public int TomatoesInPlant { get; set; }
相关问题