ホーム プログラミング言語 C Shape C# プロパティ (プロパティ)

C# プロパティ (プロパティ)


 
プロパティは、クラス、構造体、およびインターフェイスのメンバーです。クラスまたは構造体のメンバー変数は、フィールドと呼ばれます。プロパティは、アクセサーを使用して読み書きできるフィールドの拡張です。プライベート フィールドの値です。

 

プロパティには正確なメモリ位置はありませんが、読み取り、書き込み、または計算できるアクセサーがあります。たとえば、Student という名前のクラスがあり、年齢、名前、コードの 3 つのプライベート フィールドが含まれています。クラスのスコープ外からこれらのフィールドに直接アクセスすることはできませんが、これらのプライベート フィールドのプロパティにはアクセスできます。

アクセサ

プロパティ アクセサーには、get プロパティ アクセサーと set プロパティ アクセサーの 2 種類があります。このうち、get アクセサーは属性の値を返すために使用され、set アクセサーは属性の新しい値を設定するために使用されます。アクセサーを宣言する場合、次の例に示すように、アクセサーの 1 つだけを宣言することも、両方のアクセサーを同時に宣言することもできます。

// Declare a Code property of type string 
public string Code {
   get {
      return code;
   }
   set {
      code = value;
   }
}

// Declare a Name property of type string 
public string Name {
   get {
      return name;
   }
   set {
      name = value;
   }
}

// Declare an Age property of type int 
public int Age {
   get {
      return age;
   }
   set {
      age = value;
   }
} 

[例] 以下の例は、属性の使用方法を示しています。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args) 
        {
            // 新しい Student オブジェクトを作成する
            Student s = new Student();

            // studentのcode、name、ageを設定する
            s.Code = "001";
            s.Name = "Zara";
            s.Age = 9;
            Console.WriteLine("学生情報: {0}", s);
            // 年齢を1つ増やす
            s.Age += 1;
            Console.WriteLine("学生情報: {0}", s);
            Console.ReadKey();
        }
    }
    class Student
    {
        private string code = "N.A";
        private string name = "not known";
        private int age = 0;

        // Codeプロパティのタイプはstringで宣言する
        public string Code
        {
            get
            {
                return code;
            }
            set
            {
                code = value;
            }
        }

        // Nameプロパティのタイプはstringで宣言する
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }

        // Ageプロパティのタイプはintで宣言する
        public int Age
        {
            get
            {
                return age;
            }
            set
            {
                age = value;
            }
        }
        public override string ToString()
        {
            return "番号 = " + Code +", 名前 = " + Name + ", 年齢 = " + Age;
        }
    }
} 

抽象プロパティ

抽象クラスには、派生クラスで実装される抽象プロパティを持つことができます。以下にその例を示します。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args) 
        {
            // 新しいStudentオブジェクトを作成する
            Student s = new Student();

            // 学生のコード、名前、年齢を設定する
            s.Code = "001";
            s.Name = "Zara";
            s.Age = 9;
            Console.WriteLine("学生情報: {0}", s);
            // 年齢を加算する
            s.Age += 1;
            Console.WriteLine("学生情報: {0}", s);
            Console.ReadKey();
        }
    }
    public abstract class Person
    {
        public abstract string Name
        {
            get;
            set;
        }
        public abstract int Age
        {
            get;
            set;
        }
    }
    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 + ", 年齢 = " + Age;
        }
    }
} 

「 C# プロパティ (プロパティ)」についてわかりやすく解説!絶対に観るべきベスト2動画

C#プログラミング入門 第14回 (4) クラスのプロパティ
【プログラミング講座(C#)】第37回 クラスのプロパティについて【独り言】