読者です 読者をやめる 読者になる 読者になる

おれんじりりぃぶろぐ

きっと何者にもなれないエンジニアのブログ

C#のプロパティについて調べてみた

UnityでC#弄っててC++のノリでいたら
いきなりgetだのsetだの出てきて何これってなったのでちょっと調べてみた。

プロパティを使うことによって、クラス内ではメソッドのようにクラス外では変数のように扱うことが出来るようになる。ふむふむ。よく分からないので実際のコードを書いてみる。

下記は2つの数の平均値を返してくるプログラムを普通に書くとこんな感じ。

using UnityEngine;
using System.Collections;

class Average{
    private float x;
    private float y;

    public float X(){
        return x;
    }
    public void X(float value){
        x = value;
    }

    public float Y(){
        return y;
    }
    public void Y(float value){
        y = value;
    }

    public float Ave(){
        return (x + y) / 2;
    }
}

public class Test : MonoBehaviour {

    // Use this for initialization
    void Start () {

        Average a = new Average();
        a.X(5);
        a.Y(3);
        float average = a.Ave();

        Debug.Log(average);
    }
}

メンバ変数にアクセスしないとなると上記のようなコードになる。
それをC#のプロパティを使って書くと以下のように書き換えられる。

using UnityEngine;
using System.Collections;

class Average{
    private float x;
    private float y;

    public float X{
        get{ return x; }
        set{ x = value; }
    }

    public float Y{
        get{ return y; }
        set{ y = value; }
    }

    public float Ave{
        get{ return (x + y) / 2; }
    }
}

public class Test : MonoBehaviour {

    // Use this for initialization
    void Start () {

        Average a = new Average();
        a.X = 5;
        a.Y = 3;
        float average = a.Ave;

        Debug.Log(average);
    }
}

すっきりしたコードになりました。