概要
c#の自分が今まであまり使ってこなかった機能を調べてまとめていく。
記事の内容に誤りがあった場合指摘してもらえると嬉しい。
今回はプロパティについて
本題
基本的な使い方
test1.cs
using System;
class Program
{
private int num;
public int Num { get { return num; } set { num = value; } }
//setのnumにはvalue以外に定数なども代入出来る。また、複数行の処理もget、set内に書ける
public int mNum { get { return num; } }
//public int mNum => num;
//このmNumは読み取り専用。上二行は同じ働きをする。
//public int Num { get; set; }
//自動実装プロパティ。上と同じ働きをするがgetは省略出来ない。そしてsetに色々処理を書くことは無理。
//自動実装プロパティはとりあえずプロパティを使うことが決まっている場合に書いておくと良いらしい。後々コードを書き換えるのが楽になるとか
static void Main(string[] args)
{
var pro = new Program();
pro.Num = 456;
Console.WriteLine(pro.Num);//あくまでNumはフィールドではないので上2行で参照が必要
}
}
キーワードを付加すればプロパティを継承して置き換えたり動作を変更することが出来る。
test2.cs
using System;
abstract class ProgramBase
{
public abstract int Num { get; set; }
}
class ProgramOverride : ProgramBase//中身を何も書かないとエラーを吐く。下に書くオーバーライドを用いて実装する必要があるようだ。
{
private int num;
public override int Num { get { return num; } set { num = value; } }
}
class Program1
{
static void Main(string[] args)
{
ProgramBase pb = new ProgramOverride();
pb.Num = 456;
Console.WriteLine(pb.Num);
}
}
以上。クラス継承などに関しては次回以降にまとめようと思う。