У меня есть запрос о переменной и свойствах - PullRequest
0 голосов
/ 13 марта 2012

Я новичок в программировании, и теперь у меня есть запрос, касающийся переменной и свойств: «В чем разница между объявлением общедоступной переменной и общедоступных свойств?». Может ли кто-нибудь объяснить мне несколько примеров?

Ответы [ 2 ]

0 голосов
/ 13 марта 2012

Чтобы пояснить, что сказал Джон, свойства позволяют вам добавлять ограничения и логику к тому, что вы делаете.

Например, если у меня есть класс прямоугольника

    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)}} свойства работают хорошо.

Конечно, никакие правила не являются окончательными.

Надеюсь, это даст вам общее представление о свойствах и переменных, хотя, как всегда, есть чему поучиться.

Удачи!

0 голосов
/ 13 марта 2012

Многие люди придерживаются разных взглядов на то, что такое «правильный» путь, просто разные стандарты кодирования. Лично я думаю, что публичные свойства дают вам немного больше контроля, так как вы можете иметь простую логику в методах get или set. Где с публичными свойствами все в порядке, если вам нужна просто быстрая глобальная переменная.

В .net есть несколько случаев, когда вам нужно иметь свойства, а не публичные переменные, например, обычно при привязке к источникам данных и т. д.

для получения дополнительной информации проверьте эту ссылку:

codinghorror.com

...