【问题标题】:Private vs Public variables私有变量与公共变量
【发布时间】:2011-05-25 08:54:21
【问题描述】:
namespace hi
{
    class hithere
    {
         public int numberOne = 12;
         public int numberTwo = 12;

         static void yo()
         {
             public int numberThree = 12;
             private int numberFour = 12;
         }
    }
}

谁能告诉我这段代码摘录中变量 numberOne、numberTwo、numberThree 和 numberFour 之间的区别?

【问题讨论】:

  • 这似乎不是有效的 C# 代码。 IIRC 您不能在局部变量之前放置公共/私有关键字。你确定你的例子是正确的吗?
  • 这不会编译。 function yo 完全无效,没有任何意义。
  • function yo 应该是什么?这个名字暗示了一个函数,但是没有参数和使用publicprivate 暗示了一个内部类。代码 sn-p 不会编译,它不是很清楚你的意图。
  • @user542169:您的代码仍然不合法;局部变量(在函数中声明的变量)不能分配范围。

标签: c# variables private public


【解决方案1】:

numberOne 和 numberTwo 是类的成员变量。 numberThree 和 numberFour 是局部变量,作用于函数。
除此之外,您不能为局部变量声明访问修饰符(私有/公共)。

【讨论】:

  • 那么,他的问题没有意义。可能是某种伪 C# 代码。
【解决方案2】:

numberOne 和 numberTwo 是堆中的公共实例变量。它们可以在具有 hithere 对象实例的对象内部直接访问。 numberThree 和 numberFour 不能以这种方式访问​​,因为它们不是实例变量,并且被封装在函数 yo 的范围内并存储在各自的堆栈中。

【讨论】:

  • 等一下,你可以从另一个班级访问这些吗?我仍然不明白公共变量和私有变量之间的区别,就像一和二一样。
  • 假装你在另一个班级......你可以写这个代码: HiThere hiObj = new HiThere(); if(hiObj.numberOne==hiObj.numberTwo)
  • 多么糟糕的可用性,如果您尝试按回车键在此评论框中插入回车符,它会自动提交...评论框比答案框小很多...您可以直接从 HiThere 对象的实例访问 numberOne 和 numberTwo。 (例如 hiObj.numberOne;或 hiObj.numberTwo;)。您也可以像访问任何其他静态方法一样直接访问静态方法(例如 HiThere.yo();)。我建议阅读封装、静态和实例变量/方法。
猜你喜欢
  • 2011-12-03
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
  • 2017-06-30
  • 2013-01-02
  • 1970-01-01
  • 2012-05-29
相关资源
最近更新 更多