Свойства используются для выставления поля. Они используют методы доступа (set, get), через которые можно читать, записывать или манипулировать значениями приватных полей.
Свойства не называют места хранения. Вместо этого у них есть средства доступа, которые читают, записывают или вычисляют свои значения.
Используя свойства, мы можем установить проверку типа данных, заданных для поля.
Например, у нас есть частное целое поле возраста, на котором мы должны разрешить положительные значения, поскольку возраст не может быть отрицательным.
Мы можем сделать это двумя способами, используя getter и setters и используя свойство.
Using Getter and Setter
// field
private int _age;
// setter
public void set(int age){
if (age <=0)
throw new Exception();
this._age = age;
}
// getter
public int get (){
return this._age;
}
Now using property we can do the same thing. In the value is a key word
private int _age;
public int Age{
get{
return this._age;
}
set{
if (value <= 0)
throw new Exception()
}
}
Автоматически реализованное свойство, если мы не используем логику в методах get и set, мы можем использовать автоматически реализованное свойство
Когда автоматически компилируемое свойство u se создает частное анонимное поле , к которому можно получить доступ только через методы доступа get и set.
public int Age{get;set;}
Абстрактные свойства
Абстрактный класс может иметь абстрактное свойство, которое должно быть реализовано в производном классе
public abstract class Person
{
public abstract string Name
{
get;
set;
}
public abstract int Age
{
get;
set;
}
}
// overriden something like this
// Declare a Name property of type string:
public override string Name
{
get
{
return name;
}
set
{
name = value;
}
}
Мы можем установить частную собственность
В этом мы можем установить свойство auto в личном режиме (устанавливается с помощью класса)
public int MyProperty
{
get; private set;
}
Вы можете достичь того же с помощью этого кода. В этом наборе свойств функция недоступна, так как мы должны установить значение для поля напрямую.
private int myProperty;
public int MyProperty
{
get { return myProperty; }
}