インターフェイスのプロパティ (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