C# Властивість

2075 / C# / Класи / Властивість

 

Приховуємо нашу змінну через модифікатор private,
та надаємо public get і public set методи для доступу

Повний варіант

class A
{
  private string name; // поле (field)
  public string Name // властивість (property)
  {
    get { return name; }
    set { name = value; }
  }
}


static void Main(string[] args)
{
  A obj = new A();
  obj.Name = "Taras";
  Console.WriteLine(obj.Name);
}


Скорочений варіант

class A
{
  public string Name{ get; set; } // = "Taras"; працює без реалізації методів
  public A() {
    Name = "Taras";
  }
}

static void Main(string[] args)
{
  A obj = new A();
  Console.WriteLine(obj.Name); // Taras
}


Варіанти

public int Life{ get; }
public int Life{ get; private set; } // дає можливість міняти властивість всередині класу
public int Life{ get{ return 5; } }
internal string Name { get; set; } = "Taras"; // або в конструкторі


Для властивостей можна робити virtual і override

Якщо властивостей багато, C# 9

class A
{
  public int X { get; init; }
  public int Y { get; init; }
}

static void Main(string[] args)
{
  A obj = new A() {
  X = 10,
  Y = 5
}