Свойство является расширением поля и позволяет получить к нему доступ.
Для свойства не выделяется память.
Для доступа к значениям свойств используются специальные функции доступа : set — для записи значения и get — для чтения.
Синтаксис:
модификатор тип имя_свойства {
set {
//код аксессора записи поля
}
get {
//код аксессора записи поля
}
}
Для свойства не выделяется память.
Для доступа к значениям свойств используются специальные функции доступа : set — для записи значения и get — для чтения.
Синтаксис:
модификатор тип имя_свойства {
set {
//код аксессора записи поля
}
get {
//код аксессора записи поля
}
}
свойство доступное как для записи, так и для чтения
Main.cs
using
System;
class
One {
-
int
val;
-
public
int
Val {
-
set
{
-
val = value;
-
}
-
get
{
-
return
val;
-
}
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One();
-
O.Val = 10;
-
Console.WriteLine(O.Val);
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
One {
-
int
val;
-
public
int
Val {
-
set
{
-
val = value;
-
}
-
get
{
-
return
val;
-
}
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One();
-
O.Val = 10;
-
Console.WriteLine(O.Val);
-
Console.ReadKey();
-
return
0;
-
}
}
10
свойство доступное только для записи
Main.cs
using
System;
class
One {
-
int
val;
-
public
int
Val {
-
set
{
-
val = value;
-
}
-
}
-
public
int
getVal() {
-
return
val;
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One();
-
O.Val = 10;
-
Console.WriteLine(O.getVal());
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
One {
-
int
val;
-
public
int
Val {
-
set
{
-
val = value;
-
}
-
}
-
public
int
getVal() {
-
return
val;
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One();
-
O.Val = 10;
-
Console.WriteLine(O.getVal());
-
Console.ReadKey();
-
return
0;
-
}
}
10
свойство доступное только для чтения
Main.cs
using
System;
class
One {
-
int
val;
-
public
int
Val {
-
get
{
-
return
val;
-
}
-
}
-
public
One(
int
arg) {
-
val = arg;
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(10);
-
Console.WriteLine(O.Val);
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
One {
-
int
val;
-
public
int
Val {
-
get
{
-
return
val;
-
}
-
}
-
public
One(
int
arg) {
-
val = arg;
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(10);
-
Console.WriteLine(O.Val);
-
Console.ReadKey();
-
return
0;
-
}
}
10
отсутствие кода в теле аксессора set
Если отсутствует код в теле аксессора set, то свойство только возвращает значение, устанавливать значение оно не может.
Main.cs
using
System;
class
One {
-
int
val;
-
public
int
Val {
-
set
{}
-
get
{
-
return
val;
-
}
-
}
-
public
One(
int
arg) {
-
val = arg;
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(10);
-
Console.WriteLine(O.Val);
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
One {
-
int
val;
-
public
int
Val {
-
set
{}
-
get
{
-
return
val;
-
}
-
}
-
public
One(
int
arg) {
-
val = arg;
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(10);
-
Console.WriteLine(O.Val);
-
Console.ReadKey();
-
return
0;
-
}
}
10
явное указание модификатора перед аксессором
По умолчанию, аксессоры set и get имеют такой же модификатор доступа, что и само свойство.
Иногда нужно ограничить доступ к одному из аксессоров (как правило, к аксессору set), для этого нужно явно перед ключевым словом указать модификатор доступа private.
Иногда нужно ограничить доступ к одному из аксессоров (как правило, к аксессору set), для этого нужно явно перед ключевым словом указать модификатор доступа private.
Main.cs
using
System;
class
One {
-
int
a;
-
int
val;
-
public
int
Val {
-
private
set
{
-
val = value;
-
}
-
get
{
-
return
val;
-
}
-
}
-
public
One(
int
arg) {
-
//устанавливаем значение
-
Val = a = arg;
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(10);
-
Console.WriteLine(O.Val);
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
One {
-
int
a;
-
int
val;
-
public
int
Val {
-
private
set
{
-
val = value;
-
}
-
get
{
-
return
val;
-
}
-
}
-
public
One(
int
arg) {
-
//устанавливаем значение
-
Val = a = arg;
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(10);
-
Console.WriteLine(O.Val);
-
Console.ReadKey();
-
return
0;
-
}
}
10
автоматически реализуемое свойство
Для автоматически реализуемого свойства, автоматически создается скрытое резервное поле, для которого реализуются методы доступа для чтения и записи.
Main.cs
using
System;
class
One {
-
public
int
Val {
set
;
get
;}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One();
-
O.Val = 10;
-
Console.WriteLine(O.Val);
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
One {
-
public
int
Val {
set
;
get
;}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One();
-
O.Val = 10;
-
Console.WriteLine(O.Val);
-
Console.ReadKey();
-
return
0;
-
}
}
10
условие в теле аксессора
Main.cs
using
System;
class
One {
-
decimal
pi;
-
public
decimal
Pi {
-
set
{
-
if
(value == 3.14m) {
-
pi = value;
-
}
-
else
{
-
throw
new
Exception(
"Число Pi должно быт равно 3.14"
);
-
}
-
}
-
get
{
-
return
pi;
-
}
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One();
-
O.Pi = 3.14m;
-
Console.WriteLine(O.Pi);
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
One {
-
decimal
pi;
-
public
decimal
Pi {
-
set
{
-
if
(value == 3.14m) {
-
pi = value;
-
}
-
else
{
-
throw
new
Exception(
"Число Pi должно быт равно 3.14"
);
-
}
-
}
-
get
{
-
return
pi;
-
}
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One();
-
O.Pi = 3.14m;
-
Console.WriteLine(O.Pi);
-
Console.ReadKey();
-
return
0;
-
}
}
3,14