C# プロパティ リベンジ
まず、型はこちら
アクセスレベル 型名 プロパティ名
{
set
{
// setアクセサー(setter とも言う)
// ここに値の変更時の処理を書く。
// value という名前の変数に代入された値が格納される。
}
get
{
// getアクセサー (getter とも言う)
// ここに値の取得時の処理を書く。
// メソッドの場合と同様に、値はreturnキーワードを用いて返す。
}
}
寧ろ。
set
↓
get
の順の方がしっくりくるなー。
多分ここが一番わかりやすい。
概念的に。
namespace ConsoleApplication2
{
class test
{
int a;
public int b
{
get {
return a;
System.Console.WriteLine(a);
}
set { if (a > -1) a = value;
else a = 0;
System.Console.WriteLine(value);
}
}
}
class Program
{
static void Main(string[] args)
{
test test1 = new test();
test1.b = 10;
test1.b = -1;
}
}
}
プロパティは要するに
「変数毎にメソッドの処理みたいな事を書ける。」
という事。
だから
int a
{
get{}
set{}
}
という記述になる。
細かい差異として、
getアクセサ はクラスの外から値を読む。
set アクセサ は値を設定するときに使用する。
プロパティを使うメリットは
「メソッドをを増やさずに、メソッドと同等の事ができる」らしい
値が読まれた時のデバッグ
イベントを発行する際の範囲チェック。
しかし、
class MagicalGirl { private string nameField; public string Name { get { System.Console.WriteLine("Name プロパティを取得"); return nameField; } set { System.Console.WriteLine("Name プロパティを「" + value + "」に設定"); nameField = value; } } } class Test { public static void Main(string[] args) { MagicalGirl nanoha = new MagicalGirl(); nanoha.Name = "高町なのは"; System.Console.WriteLine("Name=" + nanoha.Name); } }
この
順序だと
set{}
get{}
Main()
の順で表示されてるんだよなー。
まだ何かしっくりこないなーという状態です。
というか、そもそも
System.Enviroment.
の疑問も晴れていないという罠