LoginSignup
1
0

More than 3 years have passed since last update.

フィールドとプロパティの違い

Last updated at Posted at 2020-05-22

背景

入社して2年。なんちゃってSEになる気がしてきたので。。。
(まともにプログラム勉強する時間なんかねーよ)
C#をこれからまじめに勉強する。(つもり)

初めて2週間さっそく、フィールドとプロパティの違いがわからなくなり
ここに備忘録として記す。

実行プログラム

本の値段を変数へ格納して、割引した値段を出力する。

    class Program
    {
        static void Main(string[] args)
        {
            //オブジェクト
            Book0 book0 = new Book0();
            Book1 book1 = new Book1();
            Book2 book2 = new Book2();

            //価格
            book0.price = 100;
            book1.set(1000);
            book2.price = 10000;

            //値引き率
            book0.rate = 0.8;
            book1.rate = 0.8;
            book2.rate = 0.8;

            //表示
            Console.WriteLine(book0.price * book0.rate);
            Console.WriteLine(book1.get());
            Console.WriteLine(book2.price);

            Console.ReadKey();
        }
    }

    //フィールドのみのクラス
    class Book0
    {
        public double price;
        public double rate;
    }

    //フィールドとメソッドを持つクラス
    class Book1
    {
        private double _price;
        public double rate;

        public double get()
        {
            return _price * rate;
        }
        public void set(double value)
        {
            _price = value;
        }
    }

    //プロパティのみを持つクラス
    class Book2
    {
        public double rate { get; set; }
        private double _price;
        public double price
        {
            get
            {
                return _price * rate;
            }
            set
            {
                _price = value;
            }
        }
    }

違い

・プロパティを用いると、setとgetで別々の処理をすることができる。
 つまり、値段を変えず(setせず)に、値を取得(get)することができる。
・クラスBook1で記述している通り、プロパティはgetメソッド・setメソッドの関数が入っているようなものである。
・クラスBook0:フィールド同士の掛け算、クラスBook1:getメソッド、クラスBook2:プロパティ
 で、割引した値段を取ることができる。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0