В C # что означает этот код с «get»? - PullRequest
3 голосов
/ 04 августа 2011

Я новичок в C #.

private string m;
public string M { get { return m; } }

Является ли этот тип геттера / сеттера в C # похожим на Java?

Ответы [ 8 ]

11 голосов
/ 04 августа 2011

Эта часть является полем:

private string m;

Эта часть - свойство только для чтения, которое возвращает значение поля m:

public string M { get { return m; } }

Вы можете сделать это свойство для чтения и записи следующим образом:

public string M {
    get { return m; }
    set { m = value; }
}

Или у вас может быть более сложная логика:

public string M {
    get {
        if (string.IsNullOrEmpty(m))
            return "m is null or empty";
        return m;
    }
}

По сути, поля хороши только для хранения вещей, а свойства больше похожи на методы и могут вводить логику.

1 голос
/ 04 августа 2011

Это общедоступное свойство только для чтения , т. Е. Оно имеет только общедоступный метод доступа get. Автоматически реализованные свойства могут достичь того же эффекта с меньшим количеством кода:

public string M { get; private set; }

Это свойство имеет общедоступный get, но закрытый set.CLR фактически создает m -подобное поле для хранения значения ... но оно скрыто.

1 голос
/ 04 августа 2011
private string m;

Сначала вы создаете новую строковую переменную с приватным модификатором. Если это в классе, то это не видно за пределами этого класса.

public string M { get { return m; } }

Затем вы создаете свойство этой строковой переменной. Это свойство доступно только для чтения, и вы можете получить доступ к этой переменной за пределами класса, в котором вы ее создали. Вы не можете присвоить значения этой переменной с этим типом свойства.

0 голосов
/ 04 августа 2011

Первая строка называется полем. Он создаст приватную (то есть доступную только внутри класса) переменную-член с именем m.

Вторая строка называется свойством. Это конкретное свойство переносит поле m и доступно только для чтения (т. Е. Оно имеет get, но не set).

Свойства в C # доступны, как если бы они были полями, например:

* * 1010

Однако свойства могут быть реализованы с большей сложностью, чем просто получение и установка поля. Тело свойства похоже на метод. Может содержать нетривиальный код.

0 голосов
/ 04 августа 2011

Это то, что называется свойством в C #. Доступ к нему осуществляется так, как если бы он был переменной-членом, но вместо этого вызывается метод get. Свойства также могут иметь метод set, чтобы сделать их модифицируемыми.

0 голосов
/ 04 августа 2011

Это общедоступный метод получения m, но он позволяет вам называть его как переменную, например

string s = M;

что составит s == m

0 голосов
/ 04 августа 2011

Это для определения свойств Readonly в C #, здесь у вас есть только геттер

0 голосов
/ 04 августа 2011

Это добытчик. Нет общедоступного установщика, поэтому m должен быть установлен в другом месте класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...