Ну, так что свойства - это не тот дикий запад, с которым вы их воспринимаете с первого взгляда.Прискорбная правда ООП заключается в том, что многие ваши методы являются геттерами и сеттерами, а свойства - просто способ облегчить написание этого.Кроме того, вы контролируете, что вы хотите, чтобы свойство позволяло кому-либо делать.Вы можете сделать свойство читаемым, но не доступным для записи, например, так:
private string _mystring;
public string MyString
{
get {return _mystring;}
}
Или, как упомянуто Ридом, ваш метод set может выполнять преобразование или проверку любой степени сложности.Например, что-то вроде
private long myPrime;
public long Prime {
get { return myPrime; }
set {
if (prime(value) {
myPrime = prime;
}
else {
//throw an error or do nothing
}
}
}
Как правило, у вас есть все значения, которые вы получаете от инкапсуляции, с некоторым синтаксическим сахаром, чтобы упростить некоторые общие задачи.Вы можете сделать то же самое, что и свойства в других языках, просто они выглядят иначе.