Свойство является расширением поля и позволяет получить к нему доступ.
Для свойства не выделяется память.
Для доступа к значениям свойств используются специальные функции доступа : set — для записи значения и get — для чтения.
Синтаксис:
модификатор тип имя_свойства {
set {
//код аксессора записи поля
}
get {
//код аксессора записи поля
}
}
Для свойства не выделяется память.
Для доступа к значениям свойств используются специальные функции доступа : set — для записи значения и get — для чтения.
Синтаксис:
модификатор тип имя_свойства {
set {
//код аксессора записи поля
}
get {
//код аксессора записи поля
}
}
свойство доступное как для записи, так и для чтения
Main.cs
usingSystem;classOne {-
intval; -
publicintVal { -
set{ -
val = value; -
} -
get{ -
returnval; -
} -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(); -
O.Val = 10; -
Console.WriteLine(O.Val); -
Console.ReadKey(); -
return0; -
} }
usingSystem;classOne {-
intval; -
publicintVal { -
set{ -
val = value; -
} -
get{ -
returnval; -
} -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(); -
O.Val = 10; -
Console.WriteLine(O.Val); -
Console.ReadKey(); -
return0; -
} }
10
свойство доступное только для записи
Main.cs
usingSystem;classOne {-
intval; -
publicintVal { -
set{ -
val = value; -
} -
} -
publicintgetVal() { -
returnval; -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(); -
O.Val = 10; -
Console.WriteLine(O.getVal()); -
Console.ReadKey(); -
return0; -
} }
usingSystem;classOne {-
intval; -
publicintVal { -
set{ -
val = value; -
} -
} -
publicintgetVal() { -
returnval; -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(); -
O.Val = 10; -
Console.WriteLine(O.getVal()); -
Console.ReadKey(); -
return0; -
} }
10
свойство доступное только для чтения
Main.cs
usingSystem;classOne {-
intval; -
publicintVal { -
get{ -
returnval; -
} -
} -
publicOne(intarg) { -
val = arg; -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(10); -
Console.WriteLine(O.Val); -
Console.ReadKey(); -
return0; -
} }
usingSystem;classOne {-
intval; -
publicintVal { -
get{ -
returnval; -
} -
} -
publicOne(intarg) { -
val = arg; -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(10); -
Console.WriteLine(O.Val); -
Console.ReadKey(); -
return0; -
} }
10
отсутствие кода в теле аксессора set
Если отсутствует код в теле аксессора set, то свойство только возвращает значение, устанавливать значение оно не может.
Main.cs
usingSystem;classOne {-
intval; -
publicintVal { -
set{} -
get{ -
returnval; -
} -
} -
publicOne(intarg) { -
val = arg; -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(10); -
Console.WriteLine(O.Val); -
Console.ReadKey(); -
return0; -
} }
usingSystem;classOne {-
intval; -
publicintVal { -
set{} -
get{ -
returnval; -
} -
} -
publicOne(intarg) { -
val = arg; -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(10); -
Console.WriteLine(O.Val); -
Console.ReadKey(); -
return0; -
} }
10
явное указание модификатора перед аксессором
По умолчанию, аксессоры set и get имеют такой же модификатор доступа, что и само свойство.
Иногда нужно ограничить доступ к одному из аксессоров (как правило, к аксессору set), для этого нужно явно перед ключевым словом указать модификатор доступа private.
Иногда нужно ограничить доступ к одному из аксессоров (как правило, к аксессору set), для этого нужно явно перед ключевым словом указать модификатор доступа private.
Main.cs
usingSystem;classOne {-
inta; -
intval; -
publicintVal { -
privateset{ -
val = value; -
} -
get{ -
returnval; -
} -
} -
publicOne(intarg) { -
//устанавливаем значение -
Val = a = arg; -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(10); -
Console.WriteLine(O.Val); -
Console.ReadKey(); -
return0; -
} }
usingSystem;classOne {-
inta; -
intval; -
publicintVal { -
privateset{ -
val = value; -
} -
get{ -
returnval; -
} -
} -
publicOne(intarg) { -
//устанавливаем значение -
Val = a = arg; -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(10); -
Console.WriteLine(O.Val); -
Console.ReadKey(); -
return0; -
} }
10
автоматически реализуемое свойство
Для автоматически реализуемого свойства, автоматически создается скрытое резервное поле, для которого реализуются методы доступа для чтения и записи.
Main.cs
usingSystem;classOne {-
publicintVal {set;get;} }classProgram {-
publicstaticintMain() { -
One O =newOne(); -
O.Val = 10; -
Console.WriteLine(O.Val); -
Console.ReadKey(); -
return0; -
} }
usingSystem;classOne {-
publicintVal {set;get;} }classProgram {-
publicstaticintMain() { -
One O =newOne(); -
O.Val = 10; -
Console.WriteLine(O.Val); -
Console.ReadKey(); -
return0; -
} }
10
условие в теле аксессора
Main.cs
usingSystem;classOne {-
decimalpi; -
publicdecimalPi { -
set{ -
if(value == 3.14m) { -
pi = value; -
} -
else{ -
thrownewException("Число Pi должно быт равно 3.14"); -
} -
} -
get{ -
returnpi; -
} -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(); -
O.Pi = 3.14m; -
Console.WriteLine(O.Pi); -
Console.ReadKey(); -
return0; -
} }
usingSystem;classOne {-
decimalpi; -
publicdecimalPi { -
set{ -
if(value == 3.14m) { -
pi = value; -
} -
else{ -
thrownewException("Число Pi должно быт равно 3.14"); -
} -
} -
get{ -
returnpi; -
} -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(); -
O.Pi = 3.14m; -
Console.WriteLine(O.Pi); -
Console.ReadKey(); -
return0; -
} }
3,14