Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Свойства можно объявлять для интерфейса. Следующий пример объявляет метод доступа к свойству интерфейса:
public interface ISampleInterface
{
// Property declaration:
string Name
{
get;
set;
}
}
Свойства интерфейса обычно не имеют тела. Методы доступа указывают, доступно ли свойство для чтения и записи, только для чтения или только для записи. В отличие от классов и структур, объявление методов доступа без текста не объявляется автоматически реализованным свойством. Интерфейс может определить реализацию по умолчанию для членов, включая свойства. Определение реализации по умолчанию для свойства в интерфейсе редко, так как интерфейсы не могут определять поля данных экземпляра.
Пример
В этом примере интерфейс IEmployee содержит доступное для чтения и записи свойство Name, а также свойство Counter, предназначенное только для чтения. Класс Employee реализует интерфейс IEmployee и использует эти два свойства. Программа считывает имя нового сотрудника и текущее число сотрудников, после чего отображает имя сотрудника и его рассчитанный номер.
Вы можете использовать полное имя свойства, которое ссылается на интерфейс, где был объявлен член. Например:
string IEmployee.Name
{
get { return "Employee Name"; }
set { }
}
В предыдущем примере показана явная реализация интерфейса. Например, если класс Employee реализует два интерфейса ICitizen и IEmployee, и оба интерфейса имеют свойство Name, необходимо явная реализация члена интерфейса. Это значит, что потребуется следующее объявление свойства:
string IEmployee.Name
{
get { return "Employee Name"; }
set { }
}
реализует свойство Name в интерфейсе IEmployee, а следующее объявление:
string ICitizen.Name
{
get { return "Citizen Name"; }
set { }
}
Реализует свойство Name в интерфейсе ICitizen.
interface IEmployee
{
string Name
{
get;
set;
}
int Counter
{
get;
}
}
public class Employee : IEmployee
{
public static int numberOfEmployees;
private string _name;
public string Name // read-write instance property
{
get => _name;
set => _name = value;
}
private int _counter;
public int Counter // read-only instance property
{
get => _counter;
}
// constructor
public Employee() => _counter = ++numberOfEmployees;
}
System.Console.Write("Enter number of employees: ");
Employee.numberOfEmployees = int.Parse(System.Console.ReadLine());
Employee e1 = new Employee();
System.Console.Write("Enter the name of the new employee: ");
e1.Name = System.Console.ReadLine();
System.Console.WriteLine("The employee information:");
System.Console.WriteLine($"Employee number: {e1.Counter}");
System.Console.WriteLine($"Employee name: {e1.Name}");
Пример полученных результатов
Enter number of employees: 210
Enter the name of the new employee: Hazem Abolrous
The employee information:
Employee number: 211
Employee name: Hazem Abolrous