logo search
CSharp_Prog_Guide

Заметки

Свойства можно пометить как public, private, protected, internal или protected internal. Эти модификаторы доступа определяют порядок доступа к свойству для пользователей класса. Методы доступа get и set могут иметь различные модификаторы доступа для одного свойства. Например, метод доступа get может иметь модификатор public для разрешения доступа только для чтения из типа, а метод доступа set может иметь модификатор private или protected. Дополнительные сведения см. в разделе Модификаторы доступа.

Свойство можно объявить как статическое свойство при помощи ключевого слова static. При этом свойство становится доступным для вызова в любое время, даже если экземпляр класса отсутствует. Дополнительные сведения см. в разделе Статические классы и члены статических классов.

Свойство можно пометить как виртуальное свойство при помощи ключевого слова virtual. Это позволяет производным классам переопределять поведение свойства при помощи ключевого слова override. Дополнительные сведения об этих параметрах содержатся в разделе Наследование.

Свойство, переопределяющее виртуальное свойство, может также быть sealed, что указывает на то, что для производных классов оно более не является виртуальным. И наконец, свойство можно объявить как abstract. Это означает, что в классе отсутствует реализация, поэтому производные классы должны создавать свою собственную реализацию. Дополнительные сведения об этих параметрах содержатся в разделе Абстрактные и запечатанные классы и члены классов.

Примечание.

Использование модификатора virtual, abstract или override для метода доступа свойства static является ошибкой.

Example 1

Description

This example demonstrates instance, static, and read-only properties. It accepts the name of the employee from the keyboard, increments NumberOfEmployees by 1, and displays the Employee name and number.

Code

public class Employee

{

public static int NumberOfEmployees;

private static int counter;

private string name;

// A read-write instance property:

public string Name

{

get { return name; }

set { name = value; }

}

// A read-only static property:

public static int Counter

{

get { return counter; }

}

// A Constructor:

public Employee()

{

// Calculate the employee's number:

counter = ++counter + NumberOfEmployees;

}

}

class TestEmployee

{

static void Main()

{

Employee.NumberOfEmployees = 100;

Employee e1 = new Employee();

e1.Name = "Claude Vige";

System.Console.WriteLine("Employee number: {0}", Employee.Counter);

System.Console.WriteLine("Employee name: {0}", e1.Name);

}

}

Output 1 Employee number: 101 Employee name: Claude Vige