C# プロパティ (取得および設定)
プロパティとカプセル化
プロパティの説明を始める前に、"カプセル化"について基本を理解しておく必要があります。
カプセル化の意味は、「機密」データがユーザーから隠されていることを確認することです。これを達成するには、次のことを行う必要があります。
- フィールド/変数を
private
として宣言します。 private
フィールドの値にアクセスして更新するための、プロパティを通じてpublic
のget
とset
メソッドを提供します。
プロパティ
前の章で学んだことは、private
変数は同じクラス内でのみアクセスできます(外部クラスはアクセスできません)。
ただし、それらにアクセスする必要がある場合もあります。
これはプロパティで行うことができます。
プロパティは変数とメソッドを組み合わせたようなもので、次のget
メソッドとset
メソッドの2つのメソッドがあります。
例
{.language-csharp .techis-white}
class Person
{
private string name; // field
public string Name // property
{
get { return name; } // get method
set { name = value; } // set method
}
}
例の説明
Name
プロパティはname
フィールドに関連付けられています。
プロパティとプライベート フィールドの両方に同じ名前を使用しますが、最初の文字は大文字にする事を推奨します。
get
メソッドはname
変数の値を返します。
set
メソッドはvalue
にname
変数を設定します。
value
キーワードは、プロパティに割り当てる値を表します。
よくわからない場合は、以下の例を見てください。
これでName
プロパティを使用し、Person
クラスのprivate
フィールドにアクセスして更新できるようになりました。
例
{.language-csharp .techis-white}
class Person
{
private string name; // field
public string Name // property
{
get { return name; }
set { name = value; }
}
}
class Program
{
static void Main(string[] args)
{
Person myObj = new Person();
myObj.Name = "Liam";
Console.WriteLine(myObj.Name);
}
}
出力は次のようになります。
Liam
自動プロパティ (省略形)
C#はまた、プロパティのフィールドを定義する必要がなく、記述するだけでよい省略形/自動プロパティを使用する方法を提供します。プロパティ内部にget;
とset;
を記述するだけです。
次の例は、上記の例と同じ結果を生成します。唯一の違いは、コードが少ないことです。
例
自動プロパティの使用
{.language-csharp .techis-white}
class Person
{
public string Name // property
{ get; set; }
}
class Program
{
static void Main(string[] args)
{
Person myObj = new Person();
myObj.Name = "Liam";
Console.WriteLine(myObj.Name);
}
}
出力は次のようになります。
Liam
カプセル化する理由
- クラスメンバーのより良い制御(自分 (または他の人)がコードを台無しにする可能性を減らします)
- フィールドが作れる読み取り専用(
get
メソッド使用する場合)、または書き込み専用(set
使用する場合) - 柔軟性: プログラマーは、他の部分に影響を与えることなく、コードの一部を変更できます
データのセキュリティの向上
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。