【问题标题】:I have a query about the variable and properties我有一个关于变量和属性的查询
【发布时间】:2012-03-13 07:07:36
【问题描述】:

我是编程新手,现在我有一个关于变量和属性的查询,即“声明公共变量和公共属性有什么区别?”。谁能用一些例子来解释我?

【问题讨论】:

标签: variables properties terminology


【解决方案1】:

很多人对什么是“正确”的方式有不同的看法,只是编码标准不同。就我个人而言,我认为公共属性给了你更多的控制权,因为你可以在 get 或 set 方法中有一些简单的逻辑。如果您只想要一些快速的全局变量,那么公共属性就可以了。

.net 中有一些实例,当您必须拥有属性而不是公共变量时,例如通常在绑定到数据源等时。

欲了解更多信息,请查看此链接:

codinghorror.com

【讨论】:

    【解决方案2】:

    为了澄清约翰所说的一点,属性允许您为所做的事情添加限制和逻辑。

    例如,如果我有一个矩形类

        class Rectangle
        {
              private float mWidth;
              private float mHeight;
              private float mArea;              
    
              public float width
              {
                    get
                    { 
                          return mWidth;
                    }
                    set
                    {
                         mWidth = value; 
                         mArea  = mHeight*mWidth;
                    }
              }
              public float height
              {
                    get
                    { 
                          return mHeight;
                    }
                    set
                    {
                         mHeight = value; 
                         mArea   = mHeight*mWidth;
                    }
              }
    
              public float area()
              {
                    return mArea;
              }
        }
    

    所以 rect.width += 20; 将更新宽度和面积;

    显然这是一个愚蠢的例子,但你可以在没有宽度和高度属性的情况下这样做,而是使用公共变量而不是直接使用

         public float area
         {
               get
               {    
                   return width*height;
               }
         }
    

    如果你说 float x = rect.area,这会给你正确的区域,但不会让你说 rect.area = 40。

    您可以对属性进行更多更深入的操作,例如数据绑定,但如果您刚开始编程,稍后会介绍。

    目前,您可以将属性视为一种方便的方法,不需要 () 并且可以接受或给出变量。

    如果它只做获取和设置,那么作为变量可能会更好。

    如果它在做大量的内部工作,并且影响了你的大部分课程,那么它可能应该是一个方法。

    如果是快速功能 验证输入(浮动旋转{set{mRotation = value%360;}}) 或多重检查输出( bool isInMotion{get{return (!isTurning && !isMoving)}} 属性运行良好。

    当然,没有规则是最终的。

    我希望这能让您对属性与变量有一个基本的了解,尽管与往常一样,还有很多东西要学。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 2021-11-02
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      相关资源
      最近更新 更多