【C#】プロパティとは

プロパティとは

C#には、元々カプセル化をするために、言語仕様としてゲッターやセッターを記述するための仕組みが用意されています。
それがプロパティと呼ばれるものです。

プロパティは、フィールド(データ・値)をカプセル化するための特殊なメソッドです。
普通の値のように使用できると同時に値の取得と設定をする際に、独自のロジックを記述することが可能となります。

 

プロパティを使うメリット

プロパティを使用することで、Get用のメソッドとSet用のメソッドを用意する必要がなくなります。
そのため、1つのプロパティでgetとsetのロジックを記述することが可能となります。

 

ソースコード

サンプルコード

Word.cs

using System;

namespace practic
{
    public class Word
    {
        private string _word = "";

        public void SetWord(string word)
        {
            _word = word;
        }

      // プロパティ
        public string Words
        {
            get
            {
              // 事前処理が必要な場合はここに記載可能
                return _word;
            }

            set
            {
              // 値をチェックできる
                _word = value;
            }
        }
    }
}

Program.cs(実行するクラス)

using System;

namespace practic
{
    class Program
    {
        static void Main(string[] args)
        {
            Word w1 = new Word();
            Word w2 = new Word();

            w1.Words = "プロパティのサンプルコードです。";
            Console.WriteLine(w1.Words);

            w2.Words = "このようにプロパティは使用します。";
            Console.WriteLine(w2.Words);
        }
    }
}

実行結果:
プロパティのサンプルコードです。
このようにプロパティは使用します。

 

自動実装プロパティ

対応するフィールドを用意しなくても使用できるプロパティのことを、「自動実装プロパティ」といいます。

値に対してチェックやロジック等を記述することがない場合には、自動実装プロパティを使用することができます。

自動実装プロパティを使用することで、privateフィールドの記述を省略できます。

サンプルコード

Word.cs

using System;

namespace practic
{
    public class Word
    {
        public void SetWord(string word)
        {
            Words = word;
        }

      // プロパティ
        public string Words { get; set; }
    }
}

Program.cs(実行するクラス)

using System;

namespace practic
{
    class Program
    {
        static void Main(string[] args)
        {
            Word w1 = new Word();
            Word w2 = new Word();

            w1.Words = "プロパティのサンプルコードです。";
            Console.WriteLine(w1.Words);

            w2.Words = "このようにプロパティは使用します。";
            Console.WriteLine(w2.Words);
        }
    }
}

実行結果:
プロパティのサンプルコードです。
このようにプロパティは使用します。

privateで宣言していた「_word」を削除し、プロパティの1行のみで同様の結果を得ることができています。

このように、特にロジックを記述することがなければ、自動実装プロパティを使用することが可能です。

 

参考

■公式ドキュメント
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/properties

 

おすすめ書籍

■C#を学習し始めた方向け
1週間でCの基礎が学べる本