Megosztás a következőn keresztül:


Felület tulajdonságai (C# programozási útmutató)

A tulajdonságok egy felületen deklarálhatók. Az alábbi példa egy interfésztulajdonság-tartozékot deklarál:

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

Az illesztőtulajdonságok általában nem rendelkeznek törzstel. A tartozékok jelzik, hogy a tulajdonság írásvédett, írásvédett vagy írásvédett. Az osztályoktól és a szerkezetektől eltérően a tartozék törzs nélküli deklarálása nem deklarál automatikusan implementált tulajdonságot. A felület meghatározhat egy alapértelmezett implementációt a tagok számára, beleértve a tulajdonságokat is. Az illesztőben lévő tulajdonság alapértelmezett implementációjának definiálása ritka, mert az illesztők nem tudják definiálni a példány adatmezőit.

Példa

Ebben a példában a felület IEmployee írásvédett tulajdonsága és Nameírásvédett tulajdonsága Countervan. Az osztály Employee implementálja az interfészt IEmployee , és ezt a két tulajdonságot használja. A program felolvassa egy új alkalmazott nevét és az alkalmazottak aktuális számát, és megjeleníti az alkalmazott nevét és a kiszámított alkalmazotti számot.

Használhatja a tulajdonság teljes nevét, amely arra a felületre hivatkozik, amelyben a tag deklarálva van. Példa:

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

Az előző példa az explicit felület implementálását mutatja be. Ha például az osztály Employee két illesztőt ICitizen implementál, és IEmployee mindkét interfész rendelkezik a Name tulajdonságával, az explicit felület tag implementálására van szükség. Ez a következő tulajdonságdeklaráció:

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

Implementálja a tulajdonságot Name a IEmployee felületen, míg a következő deklaráció:

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

Implementálja a tulajdonságot Name a ICitizen felületen.

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);

Példakimenet

Enter number of employees: 210
Enter the name of the new employee: Hazem Abolrous
The employee information:
Employee number: 211
Employee name: Hazem Abolrous

Lásd még