.net column

.NET開発者のためのブログメディア
変数のイメージ

C#のクラス変数とインスタンス変数の違いとは

2020年01月28日

C#の変数には「クラス変数」と「インスタンス変数」の2種類が存在します。
C#はオブジェクト指向のプログラミング言語なので、クラスのインスタンスという概念を理解することが重要です。そして、2つの変数の違いを把握してプログラムを作成する必要があります。

PG
C#の変数って種類があると聞きましたが本当ですか?
PL
クラス変数とインスタンス変数ですね。オブジェクト指向を理解してプログラムを作成していくことが大事です。内容を一緒に確認しましょう!

C#のインスタンスの作成

インスタンスの作成とは、オブジェクト指向の概念です。インスタンスはクラスの実体を表します。

例えば、人クラスがあるとします。
人は名前や年齢、性別などの属性を持ちますが、それらは人によって異なります。

実行すると、結果は以下のようになります。

実行結果

上記のコードでは、
・yamadaさん
・suzukiさん
の2人が登場します。

使用しているPersonクラスはどちらも同じものです。

上記がインスタンスを作成しているコードです。
同じクラスを使用していますが、変数が異なるのでインスタンスは別という考え方になります。
これは人という属性は一緒だが、yamadaさんとsuzukiさんが別人ということと同様の考え方です。

作成したインスタンスに対しては、下記のようにそれぞれ名前を設定します。
この場合、同じクラスで同じnameという項目であっても、インスタンスが異なります。

このように、インスタンスというのは実体を表すものと考えることができます。

C#のクラス変数とインスタンス変数

変数にはクラス変数とインスタンス変数の2つがあります。

先ほどはインスタンスごとに名前を設定して、yamadaさんとsuzukiさんのインスタンスを作成しました。

このように、インスタンスごとに内容が異なる変数をインスタンス変数と呼びます。
名前で使用していた「name」という変数は、インスタンスごとに存在しているということになります。

対して、クラス変数はクラスごとに1つだけ存在する変数です。
インスタンスが複数あり、それぞれに変数が設定されていたとしても、クラス変数は同じ内容になります。

PG
クラス変数とインスタンス変数の違いがよく分かりました!
PL
C#でのプログラミングにおいて、非常に重要なポイントとなるので、しっかり理解して使っていきましょう。

クラス変数とインスタンス変数は有効範囲が違う

クラス変数はインスタンスが異なっていても内容を共有する変数、インスタンス変数はインスタンスごとに存在する変数でした。2つの変数は有効範囲に差があります。
C#のプログラミングにおいて、大事なポイントになるので、しっかり理解して使ってみてください。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)