C # Нужно объяснение вещей, включающих переменные, кроме класса - PullRequest
0 голосов
/ 04 мая 2018

Так и сказано, что это:

public int HoursWorked { get; set; }

эквивалентно ...

private int hWorked;
public int HoursWorked
{
    get
    {
        return hWorked;
    }
    set
    {
        hWorked = value;
    }
}

У меня два вопроса ...

  1. Как выполнение простой команды, которая просто вызывает "HoursWorked", привносит в нее "hWorked"?

  2. Я также не до конца понимаю, что означает значение "значение"

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

* MSDN 1002 *

Свойства объединяют аспекты полей и методов. Пользователю объект, свойство выглядит как поле, доступ к свойству требует того же синтаксиса. Для разработчика класса свойство один или два кодовых блока, представляющих метод доступа get и / или набор сбруя. Блок кода для метода доступа get выполняется, когда свойство читается; блок кода для установленного средства доступа выполняется, когда Свойству присвоено новое значение. Недвижимость без набора аксессор считается доступным только для чтения. Свойство без доступа get считается только для записи. Свойство, которое имеет оба метода доступа чтение-запись.

private int hWorked; // the name field. It will be used internally to hold to value.
public int HoursWorked // the Name property. User will use with object of class.
{
    get
    {
        return hWorked;
    }
    set
    {
        hWorked = value; //  "value" is the actual value (here int) which is assigned by user while accessing this property from somewhere in other class or same class.
    }
}

Итак, HoursWorked это свойство. hWorked - это поле.

1. Как выполнение простой команды, которая просто вызывает «HoursWorked», привносит в нее «hWorked»?

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

2. Я также не до конца понимаю, что подразумевается под значением «значение»

«значение» - это фактическое значение (здесь int), которое пользователь назначает / устанавливает. Например: пользователь назначает HoursWorked = 50;, а затем value = 50.

проверьте msdn для более подробной информации.

0 голосов
/ 04 мая 2018

Сначала немного терминологии: HoursWorked является свойством . hWorked - это поле .

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

value - ключевое слово языка C #. Это значение, которое передается при установке свойства. Вы не можете изменить это, только назначить это. Так что если вы назначите HoursWorked = 10;, value будет равно 10.

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

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