English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
属性(Property) はクラス(class)、構造体(structure)およびインターフェース(interface)のネームドメンバーです。クラスや構造体内のメンバーデータやメソッドは フィールド(Field)。 アクセッサー(accessors) プライベートフィールドの値を読み書き可能または操作可能にする
属性(Property)は、ストレージ位置を決定しません。代わりに、読み書き可能またはその値を計算する アクセッサー(accessors)。
例えば、Student という名前のクラスが age、name、code というプライベートフィールドを持っています。これらのフィールドに直接アクセスすることはできませんが、それらのプライベートフィールドにアクセスする属性を持つことができます。
属性(Property)のアクセサー(accessor)属性にアクセスするための実行可能な命令を含みます。アクセサー(accessor)の宣言には、get アクセサー、set アクセサー、またはその両方を含むことができます。例えば:
// string型の Code 属性を宣言します。 public string Code { get { return code; } set { code = value; } } // string型の Name 属性を宣言します。 public string Name { get { return name; } set { name = value; } } // int型の Age 属性を宣言します。 public int Age { get { return age; } set { age = value; } }
以下の例では、属性(Property)の使用法を示します:
using System; namespace w3codebox { class Student { private string code = "N.A"; private string name = "not known"; private int age = 0; // string型の Code 属性を宣言します。 public string Code { get { return code; } set { code = value; } } // string型の Name 属性を宣言します。 public string Name { get { return name; } set { name = value; } } // int型の Age 属性を宣言します。 public int Age { get { return age; } set { age = value; } } public override string ToString() { return \ + Code +", Name = \ + Name + ", Age = \ + Age; } } class ExampleDemo { public static void Main() { // 新しい Student オブジェクトを生成します。 Student s = new Student(); // studentのcode、name、ageを設定 s.Code = "001"; s.Name = "Zara"; s.Age = 9; Console.WriteLine("Student Info: {0}", s); // 年齢を増加 s.Age += 1; Console.WriteLine("Student Info: {0}", s); Console.ReadKey(); } } }
上記のコードがコンパイルされ実行された場合、以下のような結果が得られます:
Student Info: Code = 001, Name = Zara, Age = 9 Student Info: Code = 001, Name = Zara, Age = 10
抽象クラスは抽象属性を持ち、これらの属性は派生クラスで実装されるべきです。以下のプログラムがその点を示しています:
using System; namespace w3codebox { public abstract class Person { public abstract string Name { get; set; } public abstract int Age { get; set; } } class Student : Person { private string code = "N.A"; private string name = "N.A"; private int age = 0; // string型の Code 属性を宣言します。 public string Code { get { return code; } set { code = value; } } // string型の Name 属性を宣言します。 public override string Name { get { return name; } set { name = value; } } // int型の Age 属性を宣言します。 public override int Age { get { return age; } set { age = value; } } public override string ToString() { return \ + Code +", Name = \ + Name + ", Age = \ + Age; } } class ExampleDemo { public static void Main() { // 新しい Student オブジェクトを生成します。 Student s = new Student(); // studentのcode、name、ageを設定 s.Code = "001"; s.Name = "Zara"; s.Age = 9; Console.WriteLine("Student Info:",- {0}", s); // 年齢を増加 s.Age += 1; Console.WriteLine("Student Info:",- {0}", s); Console.ReadKey(); } } }
上記のコードがコンパイルされ実行された場合、以下のような結果が得られます:
Student Info: Code = 001, Name = Zara, Age = 9 Student Info: Code = 001, Name = Zara, Age = 10