Amazonでお得な買い物

【C#超入門】get/setの基本的な使い方|自動実装プロパティで初期化までできちゃう

C# get/setアクセサ

C#は他の言語と異なりget/setアクセサを使ってプロパティを構築することができます。

今回は実例を交えてget/setを利用したプロパティについて解説していきます。

目次
スポンサーリンク

C#のプロパティとは?

C#のプロパティはget/setアクセサを使って実装したものです。

こうすることでクラス内部ではメソッドのように振る舞い、インスタンスを生成する側から見るとメンバー変数のように扱うことができます。

これはC++やJavaにはない概念なので最初のうちは違和感が出てくるかもしれません。

get/setアクセサを利用したコード

using System;

namespace PropertyTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Ramen ramen = new Ramen();

            Console.WriteLine("変更前のラーメンは:{0}", ramen.Name);

            // 名前を変更する
            ramen.Name = "富田";
            Console.WriteLine("変更後のラーメンは:{0}", ramen.Name);
        }
    }

    class Ramen
    {
        private string name = "中本";

        /// <summary>
        /// 外部から呼ばれる
        /// </summary>
        public string Name
        {
            get
            {
                return name; // 外部から取得される
            }       
            set
            {
                name = value; // 外部から設定する
            }      
        }
    }
}

実行結果

変更前のラーメンは:中本
変更後のラーメンは:富田

C# 3.0以降の自動実装プロパティで簡略化

C# 3.0以降の機能で「自動実装プロパティ(Auto Implemented Properties)」というのがあります。

これは、returnvalueといったget/setアクセサとセットになっているものを省略可することでコードを簡略化できる機能です。

では実査に自動実装プロパティ適用前と後を比較してみましょう。

自動実装プロパティの適用前

自動実装適用の前後を比較してみましょう。まずは適用前から。

適用前のコード

    class Ramen
    {
        private string name = "中本";

        /// <summary>
        /// 外部から呼ばれる
        /// </summary>
        public string Name
        {
            get
            {
                return name; // 外部から取得される
            }       
            set
            {
                name = value; // 外部から設定する
            }      
        }
    }

自動実装プロパティの適用後

次に自動実装プロパティを適用。

自動実装プロパティの適用後

    class Ramen
    {
        /// <summary>
        /// 外部から呼ばれる
        /// </summary>
        public string Name { get; set; } = "中本";
    }

コード一行でシンプルになりました。さらに一行になったことで可読性も向上しています。

実行結果

変更前のラーメンは:中本
変更後のラーメンは:富田

読み込み専用のプロパティにするには?

ちなみに、setアクセサにprivateを付けることで読み込み専用のプロパティに変身させることができます。

public string Name { get; private set; } = "中本";

このようにsetアクセサにアクセスできない警告が表示されビルドエラーとなりました。

C#でプロパティを生成する便利なコードスニペット

プロパティで値や文字列を手書きで定義するって結構面倒です。

そこで、ショートカットのように手軽にプログラムを実装できる「コードスニペット」という機能が用意されています。

代表的なコードスニペット

プロパティを実装できるコードスニペット
  • prop
  • propg
  • propfull

まずコード上でpropと入力するとコードスニペット一覧が出てくるのでそのままShiftキーを2回押します。

すると、このようにプロパティが実装されてきます。

propのコードスニペット

propのコードスニペットはこちら。

public int MyProperty { get; set; }

propgのコードスニペット

propgのコードスニペットはこちら。

public int MyProperty { get; private set; }

propgでは読み込み専用のプロパティが生成されます。

propfullのコードスニペット

private int myVar;

public int MyProperty
{
  get { return myVar; }
  set { myVar = value; }
}

propfullは一番王道のプロパティですね。すべてのコードが書かれています。

C#でみんなが買っている本

「C#の本」人気ランキングになります。

スクロールできます
ランク製品特徴と評価価格
1
1週間でC#の基礎が学べる本
7日間で基礎力が身に付く

評価
単行本 2,750円
Kindle 2,475円
2
なるほどなっとくC#入門
厳選した機能を学べる


評価
単行本 3,168円
Kindle 3,010円
各製品の比較

\仕事と資格に強いスクールを探す/

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

都内の精密機器を作っている会社に勤務している14年目のエンジニアです。趣味は美味しいものを食べることとゴルフ。プログラムについて今まで学んだことをわかりやすく発信するサイトを目指しています。

コメント

コメントする

目次