Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 lees-schrijf, 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.
Voorbeeld
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 ICitizen
en IEmployee
implementeert en beide interfaces de Name
eigenschap hebben, is de expliciete interface-implementatie van het lid nodig. Dat wil gezegd, de volgende eigenschapsdeclaratie:
string IEmployee.Name
{
get { return "Employee Name"; }
set { }
}
Implementeert de Name
eigenschap in de IEmployee
interface, met 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: {e1.Counter}");
System.Console.WriteLine($"Employee name: {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