次の方法で共有


インターフェイスのプロパティ (C# プログラミング ガイド)

更新 : 2007 年 11 月

インターフェイス (C# リファレンス) に対してプロパティを宣言できます。次に示すのは、インターフェイス インデクサのアクセサの例です。

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

インターフェイス プロパティのアクセサには、本体がありません。したがって、アクセサの目的は、プロパティが読み取り/書き込み、読み取り専用、または書き込み専用のいずれであるかを示すことです。

使用例

次の例では、インターフェイス IEmployee には、読み取り/書き込みプロパティ Name と読み取り専用プロパティ Counter があります。Employee クラスは IEmployee インターフェイスを実装し、この 2 つのプロパティを使用します。プログラムは、新しい従業員の名前と現在の従業員数を読み取り、従業員の名前と計算した従業員番号を表示します。

プロパティの完全修飾名を使用して、メンバが宣言されているインターフェイスを参照しています。次に例を示します。

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

これは、「明示的なインターフェイスの実装 (C# プログラミング ガイド)」と呼ばれます。たとえば、Employee クラスが 2 つのインターフェイス ICitizen と IEmployee を実装し、両方のインターフェイスに Name プロパティがある場合は、明示的なインターフェイス メンバの実装が必要になります。つまり、次のプロパティ宣言では IEmployee インターフェイスの Name プロパティが実装されます。

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

一方、次の宣言では ICitizen インターフェイス Name プロパティが実装されます。

string ICitizen.Name
{
    get { return "Citizen Name"; }
    set { }
}
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

出力例

Enter number of employees: 210

Enter the name of the new employee: Hazem Abolrous

The employee information:

Employee number: 211

Employee name: Hazem Abolrous

参照

概念

C# プログラミング ガイド

参照

プロパティ (C# プログラミング ガイド)

プロパティの使用 (C# プログラミング ガイド)

プロパティとインデクサの比較 (C# プログラミング ガイド)

インデクサ (C# プログラミング ガイド)

インターフェイス (C# プログラミング ガイド)