我有关于变量和属性的查询

时间:2012-03-13 07:07:36

标签: variables properties terminology

我是编程的新手,现在我对变量和属性进行了查询,即“声明公共变量和公共属性之间有什么区别?”。有人可以用一些例子解释我吗?

1 个答案:

答案 0 :(得分:0)

为了澄清约翰所说的一些内容,属性允许你为你正在做的事情添加限制和逻辑。

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

    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)}} 物业运作良好。

当然没有规则是最终的。

我希望这能让你对属性与变量有一个基本的了解,不过一如既往,还有很多东西需要学习。

祝你好运!