Разница между этими двумя методами доступа / получения / установки? - PullRequest
3 голосов
/ 14 июля 2010

Какая разница между этим:

public string Title { get; set; }

и этим:

public string Title;

Раньше люди всегда говорили, что используют методы доступа с закрытыми переменными, вызываемыми общедоступным средством доступа.Теперь, когда .net сделал get;задавать;операторы настолько упрощены, что без закрытой переменной они выглядят почти так же, как и просто открытая переменная, так в чем же смысл и разница?

Ответы [ 3 ]

8 голосов
/ 14 июля 2010

У меня есть статья на эту тему: Почему свойства имеют значение .

Короче говоря: свойства являются частью API. Поля являются частью реализации. Не подвергайте свою реализацию миру. Вы можете изменить автоматически реализованное свойство, чтобы иметь больше поведения (например, ведение журнала) в совместимом с исходным кодом и двоичном коде. Вы не можете сделать это с полем.

2 голосов
/ 14 июля 2010

Первый

public string Title { get; set; }

- это свойство (которое фактически является функцией).

Второй

public string Title;

Это поле.

Хорошо использовать свойства, чтобы скрыть реализацию (Encapsulation).

0 голосов
/ 14 июля 2010

Во втором случае вы не можете изменить реализацию средства доступа (потому что оно не является средством доступа) без перекомпиляции зависимых сборок.

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