Условия программирования - поле, член, свойства (C #) - PullRequest
21 голосов
/ 27 апреля 2010

Я пытался найти значение этих терминов, но из-за языкового барьера я не мог понять, для чего они используются. Я предполагаю, что «поле» является переменной (объект тоже?) В классе, в то время как «свойство» является просто объектом, который возвращает определенное значение и не может содержать методы и т. Д. Под «членом» я понимаю любой объект, который объявлен на уровне класса. Но это только мои предположения, основанные на закомментированных примерах кода, где некоторые осторожные программисты использовали «область свойств» и т. Д. Буду очень признателен, если кто-нибудь сможет мне это объяснить.

Ответы [ 3 ]

42 голосов
/ 27 апреля 2010

В C #:

поля : это переменные, объявленные на уровне класса.

public class SomeClass
{
    private int someInteger; // This is a field
    public double someDouble; // This is another field
    protected StringBuidler stringBuidler; // Still another field
}

properties : Часто используемые как средства доступа к приватному полю класса, они могут предоставлять методы get и set, которые оборачивают некоторую логику вокруг манипуляции полем.

public class SomeClass
{
    private StringBuilder stringBuilder;

    // Property declaration
    public StringBuilder StringBuilder
    {
        get 
        { 
            if(this.stringBuilder == null)
                this.stringBuilder = new StringBuidler();

            return this.stringBuilder;
        }
        set
        {
            if(this.stringBuilder == null)
                this.stringbuilder = value;
        }
    }
}

members : Включает поля, свойства, методы, события класса.

1 голос
/ 27 апреля 2010

Терминология в этой области безнадежно перемешана и сильно различается от языка к языку и от модели к модели. Вы имеете в виду определенный язык или платформу?

В первом приближении:

  1. В обсуждениях SQL часто используются поле и столбец взаимозаменяемо. Поле также является стандартной терминологией для членов данных классов Java и C #.
  2. Member чаще всего используется в C ++ для ссылки на функции-члены , переменные-члены и т. Д. Для различных различных членов struct / определение класса.
0 голосов
/ 27 апреля 2010

Эти термины охватывают разные языки, и поэтому они несколько перекрывают друг друга, и различия скорее связаны с конкретными языками, чем с концепцией. Свойство и поле используются для описания данных в классах, членами могут быть данные и поведение (например, методы) в классах. Однако существуют различия между свойствами и полями в C # и Java, но это синтаксический сахар. Если бы вы использовали объектно-ориентированный язык на основе прототипов (в отличие от основанного на классах), вы бы говорили о слотах объектов ... Если вы хотите понять весь смысл, сначала выберите язык.

...