Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp_Prog_Guide.doc
Скачиваний:
16
Добавлен:
16.11.2019
Размер:
6.22 Mб
Скачать

Метод доступа set

Метод доступа set похож на метод, имеющий тип возвращаемого значения void. В нем используется неявный параметр value, тип которого соответствует типу свойства. В следующем примере метод доступа set добавляется в свойство Name:

class Person

{

private string name; // the name field

public string Name // the Name property

{

get

{

return name;

}

set

{

name = value;

}

}

}

Когда свойству присваивается значение, выполняется вызов метода доступа set с помощью аргумента, предоставляющего новое значение. Пример.

Person p1 = new Person();

p1.Name = "Joe"; // the set accessor is invoked here

System.Console.Write(p1.Name); // the get accessor is invoked here

Использование имени неявного параметра value для объявления локальной переменной в методе доступа set является ошибкой.

Remarks

Properties can be marked as public, private, protected, internal, or protected internal. These access modifiers define how users of the class can access the property. The get and set accessors for the same property may have different access modifiers. For example, the get may be public to allow read-only access from outside the type, and the set may be private or protected.

A property may be declared as a static property by using the static keyword. This makes the property available to callers at any time, even if no instance of the class exists.

A property may be marked as a virtual property by using the virtual keyword. This enables derived classes to override the property behavior by using the override keyword.

A property overriding a virtual property can also be sealed, specifying that for derived classes it is no longer virtual. Lastly, a property can be declared abstract. This means that there is no implementation in the class, and derived classes must write their own implementation.

Note:

It is an error to use a virtual, abstract, or override modifier on an accessor of a static property.

Заметки

Свойства можно пометить как 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