Свойство
Свойство выглядит как поле, но реализуется
аксессорами get и set. В get
возвращают значение, в set записывают
(через ключевое слово value). Автосвойство
{ get; set; } создаёт скрытое поле
компилятором. Вычисляемое свойство считает
результат в get без отдельного хранения.
Синтаксис
тип Имя { get; set; }
тип Имя
{
get { return поле; }
set { поле = value; }
}
Пример
Давайте объявим автосвойство и запишем в него значение:
using System;
class Row
{
public string Text { get; set; }
}
class Program
{
static void Main()
{
var row = new Row();
row.Text = "abcde";
Console.WriteLine(row.Text);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте ограничим запись в свойство через
явный set:
using System;
class Score
{
private int points;
public int Points
{
get { return points; }
set
{
if (value >= 0)
{
points = value;
}
}
}
}
class Program
{
static void Main()
{
var score = new Score();
score.Points = 5;
score.Points = -1;
Console.WriteLine(score.Points);
}
}
Результат выполнения кода:
5
Пример
Давайте сделаем вычисляемое свойство по длине строки:
using System;
class Label
{
public string Text { get; set; } = "abcde";
public int Length
{
get { return Text.Length; }
}
}
class Program
{
static void Main()
{
var label = new Label();
Console.WriteLine(label.Length);
}
}
Результат выполнения кода:
5