Schnittstelleneigenschaften (C#-Programmierhandbuch)

Eigenschaften können für Schnittstelle deklariert werden. Das folgende Beispiel zeigt einen Accessor für einen Schnittstellenindexer:

public interface ISampleInterface
{
    // Property declaration:
    string Name
    {
        get;
        set;
    }
}

Der Accessor einer Schnittstelleneigenschaft enthält keinen Text. Ein Accessor wird also verwendet, um anzugeben, ob die Eigenschaft Lese- und Schreibzugriffe gleichzeitig bzw. jeweils nur Schreib- oder Lesezugriffe unterstützt.

Beispiel

In diesem Beispiel hat die IEmployee-Schnittstelle eine Lesen-\/Schreiben-Eigenschaft Name und eine Nur-Schreiben-Eigenschaft Counter. Die Employee-Klasse implementiert die IEmployee-Schnittstelle und verwendet diese beiden Eigenschaften. Der Name eines neuen Mitarbeiters und die aktuelle Anzahl der Mitarbeiter werden vom Programm gelesen, und der Mitarbeitername sowie die berechnete Anzahl von Mitarbeitern wird angezeigt.

Sie könnten den vollqualifizierten Namen der Eigenschaft verwenden, die auf die Schnittstelle verweist, in der der Member deklariert ist. Beispiele:

string IEmployee.Name
{
    get { return "Employee Name"; }
    set { }
}

Dies wird als Explizite Schnittstellenimplementierung bezeichnet. Wenn beispielsweise zwei Schnittstellen, ICitizen und IEmployee, von der Employee-Klasse implementiert sind und beide Schnittstellen über die Name-Eigenschaft verfügen, muss der Schnittstellenmember explizit implementiert werden. Mit der folgenden Eigenschaftendeklaration

string IEmployee.Name
{
    get { return "Employee Name"; }
    set { }
}

wird die Name-Eigenschaft für die IEmployee-Schnittstelle implementiert, während mit der Deklaration

string ICitizen.Name
{
    get { return "Citizen Name"; }
    set { }
}

die Name-Eigenschaft für die ICitizen-Schnittstelle implementiert wird.

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
        {
            return name;
        }
        set
        {
            name = value;
        }
    }

    private int counter;
    public int Counter  // read-only instance property
    {
        get
        {
            return counter;
        }
    }

    public Employee()  // constructor
    {
        counter = ++counter + numberOfEmployees;
    }
}

class TestEmployee
{
    static void Main()
    {
        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);
    }
}

210 Hazem Abolrous

Beispielausgabe

Enter number of employees: 210

Enter the name of the new employee: Hazem Abolrous

The employee information:

Employee number: 211

Employee name: Hazem Abolrous

Siehe auch

C#-Programmierhandbuch
Eigenschaften
Verwenden von Eigenschaften
Vergleich zwischen Eigenschaften und Indexern
Indexer
Schnittstellen