Gränssnittsegenskaper (C#-programmeringsguide)
Egenskaper kan deklareras i ett gränssnitt. I följande exempel deklareras en gränssnittsegenskapsåtkomst:
public interface ISampleInterface
{
// Property declaration:
string Name
{
get;
set;
}
}
Gränssnittsegenskaper har vanligtvis ingen brödtext. Åtkomsterna anger om egenskapen är skrivskyddad, skrivskyddad eller skrivskyddad. Till skillnad från i klasser och structs deklarerar inte att åtkomsterna utan en brödtext deklarerar en automatiskt implementerad egenskap. Ett gränssnitt kan definiera en standardimplementering för medlemmar, inklusive egenskaper. Det är ovanligt att definiera en standardimplementering för en egenskap i ett gränssnitt eftersom gränssnitt inte kan definiera instansdatafält.
Exempel
I det här exemplet har gränssnittet IEmployee
en skrivskyddad egenskap, Name
, och en skrivskyddad egenskap, Counter
. Klassen Employee
implementerar IEmployee
gränssnittet och använder dessa två egenskaper. Programmet läser namnet på en ny anställd och det aktuella antalet anställda och visar medarbetarens namn och det beräknade antalet anställda.
Du kan använda det fullständigt kvalificerade namnet på egenskapen, som refererar till gränssnittet där medlemmen deklareras. Till exempel:
string IEmployee.Name
{
get { return "Employee Name"; }
set { }
}
Föregående exempel visar explicit gränssnittsimplementering. Om klassen Employee
till exempel implementerar två gränssnitt ICitizen
och IEmployee
båda gränssnitten Name
har egenskapen krävs den explicita implementeringen av gränssnittsmedlemmen. Det vill: följande egenskapsdeklaration:
string IEmployee.Name
{
get { return "Employee Name"; }
set { }
}
Implementerar Name
egenskapen i IEmployee
gränssnittet, medan följande deklaration:
string ICitizen.Name
{
get { return "Citizen Name"; }
set { }
}
Implementerar egenskapen Name
i ICitizen
gränssnittet.
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);
Exempelutdata
Enter number of employees: 210
Enter the name of the new employee: Hazem Abolrous
The employee information:
Employee number: 211
Employee name: Hazem Abolrous