Interface-eigenschappen (C#-programmeerhandleiding)
Eigenschappen kunnen worden gedeclareerd op een interface. In het volgende voorbeeld wordt een toegangsfunctie voor interface-eigenschappen declareren:
public interface ISampleInterface
{
// Property declaration:
string Name
{
get;
set;
}
}
Interface-eigenschappen hebben doorgaans geen hoofdtekst. De accessors geven aan of de eigenschap alleen-lezen, alleen-lezen of alleen-schrijven is. In tegenstelling tot klassen en structs, declareert het declareren van de accessors zonder hoofdtekst geen automatisch geïmplementeerde eigenschap. Een interface kan een standaard implementatie definiëren voor leden, inclusief eigenschappen. Het definiëren van een standaard implementatie voor een eigenschap in een interface is zeldzaam omdat interfaces geen instantiegegevensvelden kunnen definiëren.
Opmerking
In dit voorbeeld heeft de interface IEmployee
een eigenschap lezen/schrijven, Name
en een alleen-lezen eigenschap, Counter
. De klasse Employee
implementeert de IEmployee
interface en gebruikt deze twee eigenschappen. Het programma leest de naam van een nieuwe werknemer en het huidige aantal werknemers en geeft de naam van de werknemer en het berekende werknemersnummer weer.
U kunt de volledig gekwalificeerde naam van de eigenschap gebruiken, die verwijst naar de interface waarin het lid wordt gedeclareerd. Voorbeeld:
string IEmployee.Name
{
get { return "Employee Name"; }
set { }
}
In het voorgaande voorbeeld ziet u expliciete interface-implementatie. Als de klasse Employee
bijvoorbeeld twee interfaces implementeert en IEmployee
beide interfaces ICitizen
de Name
eigenschap hebben, is de expliciete implementatie van het interfacelid nodig. Dat wil gezegd, de volgende eigenschapsdeclaratie:
string IEmployee.Name
{
get { return "Employee Name"; }
set { }
}
Implementeert de Name
eigenschap op de IEmployee
interface, terwijl de volgende declaratie:
string ICitizen.Name
{
get { return "Citizen Name"; }
set { }
}
Implementeert de Name
eigenschap op de ICitizen
interface.
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: {0}", e1.Counter);
System.Console.WriteLine("Employee name: {0}", e1.Name);
Voorbeelduitvoer
Enter number of employees: 210
Enter the name of the new employee: Hazem Abolrous
The employee information:
Employee number: 211
Employee name: Hazem Abolrous