ここでは、C# におけるプロパティの記述方法やアクセスレベルの定義方法について掲載しています。これから C# を学習しようとする人のための入門編の内容となっております。
スポンサーリンク
C# プロパティの記述方法
C# でのプロパティの記述方法を以下に示します。VB.NET の場合、VB2010 から自動実装プロパティが機能追加されましたが、C# では、C#2008から自動実装プロパティが機能追加されています。なお、自動実装プロパティについては VB.NET におけるサンプルになりますが 「 [ VB.NET ] プロパティのアクセスレベルと自動実装プロパティ 」 を参照ください。
C#
// C# 2005までのプロパティの記述方法
public class Employee2005
{
private int _ID;
private string _Name;
public int ID { get { return _ID; } set { _ID = value; } }
public string Name { get { return _Name; } set { _Name = value; } }
}
// C# 2008からは、自動実装プロパティで以下のように記述可能
public class Employee2008
{
public int ID { get; set; }
public string Name { get; set; }
}
プロパティのアクセスレベル
上記のサンプルでは、public なメンバ変数を定義した場合と変わりありませんが、set は private、 get は public のようにアクセスレベルを設定することでができます。
C#
// C#2005 private宣言で設定(set)は、自クラス内からのみアクセス可能
public class Employee2005
{
private int _ID;
private string _Name;
public int ID { get { return _ID; } private set { _ID = value; } }
public string Name { get { return _Name; } private set { _Name = value; } }
}
// C#2008 private宣言で設定(set)は、自クラス内からのみアクセス可能
public class Employee2008
{
// 自動実装プロパティ
public int ID { get; private set; }
public string Name { get; private set; }
}
設定または取得のみのプロパティ
C# 設定のみや取得のみのプロパティを定義するには、set または get を記述しなければよいだけです。 ただし、自動実装プロパティでは、get および set アクセサ両方の記述しなければ、構文エラーとなってしまいます。
C#
// C#2005 取得のみのプロパティの記述方法
public class Employee2005
{
private int _ID;
private string _Name;
public int ID { get { return _ID; } }
public string Name { get { return _Name; } }
}
// C#2008 取得のみのプロパティは構文エラーとなり作成できない
public class Employee2008
{
// 自動実装プロパティ
public int ID { get; } // ★構文エラー
public string Name { get; } // ★構文エラー
}