Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Właściwości można zadeklarować w interfejsie. Poniższy przykład deklaruje akcesor właściwości interfejsu:
public interface ISampleInterface
{
// Property declaration:
string Name
{
get;
set;
}
}
Właściwości interfejsu zwykle nie mają treści. Metody dostępu wskazują, czy właściwość jest do odczytu i zapisu, tylko do odczytu, czy tylko do zapisu. W przeciwieństwie do klas i struktur deklarowanie metod dostępu bez treści nie deklaruje automatycznie zaimplementowanej właściwości. Interfejs może definiować domyślną implementację członków, w tym właściwości. Definiowanie domyślnej implementacji właściwości w interfejsie jest rzadkie, ponieważ interfejsy nie mogą definiować pól danych wystąpienia.
Przykład
W tym przykładzie interfejs IEmployee ma właściwość read-write, Namei właściwość tylko do odczytu, Counter. Klasa Employee implementuje IEmployee interfejs i używa tych dwóch właściwości. Program odczytuje nazwę nowego pracownika i bieżącą liczbę pracowników oraz wyświetla nazwę pracownika oraz obliczony numer pracownika.
Można użyć w pełni kwalifikowanej nazwy właściwości, która odwołuje się do interfejsu, w którym element członkowski jest zadeklarowany. Na przykład:
string IEmployee.Name
{
get { return "Employee Name"; }
set { }
}
W poprzednim przykładzie pokazano implementację jawnego interfejsu. Na przykład, jeśli klasa Employee implementuje dwa interfejsy, ICitizen i IEmployee, a oba interfejsy mają właściwość Name, wymagana jest jawna implementacja członków interfejsów. Oznacza to, że następująca deklaracja właściwości:
string IEmployee.Name
{
get { return "Employee Name"; }
set { }
}
Implementuje właściwość Name w interfejsie IEmployee, a następująca deklaracja:
string ICitizen.Name
{
get { return "Citizen Name"; }
set { }
}
Implementuje Name właściwość na interfejsie 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}");
Przykładowe dane wyjściowe
Enter number of employees: 210
Enter the name of the new employee: Hazem Abolrous
The employee information:
Employee number: 211
Employee name: Hazem Abolrous