Schnittstelleneigenschaften (C#-Programmierhandbuch)

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

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

Der Accessor einer Schnittstelleneigenschaft enthält keinen Text. Der Zweck eines Accessors besteht darin anzugeben, ob die Eigenschaft gleichzeitig Lese- und Schreibzugriff, nur Lesezugriff oder nur Schreibzugriff besitzt.

Beispiel

In diesem Beispiel besitzt die Schnittstelle IEmployee eine Lese-/Schreibzugriff-Eigenschaft Name und eine Lesezugriff-Eigenschaft Counter. Die Klasse Employee implementiert die Schnittstelle IEmployee 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 Mitarbeiteranzahl werden angezeigt.

Sie können den vollqualifizierten Namen der Eigenschaft verwenden, der auf die Schnittstelle verweist, in der der Member deklariert wird. Zum Beispiel:

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

Dies wird Explizite Schnittstellenimplementierung genannt. Wenn z.B. die Klasse Employee die beiden Schnittstellen ICitizen und IEmployee implementiert und beide Schnittstellen die Eigenschaft Name besitzen, ist die explizite Implementierung des Schnittstellenmembers erforderlich. Das bedeutet, dass die folgende Eigenschaftendeklaration:

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

die Eigenschaft Name für die Schnittstelle IEmployee implementiert. Dahingegen implementiert die folgende Deklaration:

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

die Eigenschaft Name für die Schnittstelle 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
        {
            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