C#での基本的な変数宣言の方法と型推論についてについてわかりやすく徹底解説!

公開日時:   更新日時:
C#での基本的な変数宣言の方法と型推論についてについてわかりやすく徹底解説!
基本情報技術者試験の試験対策はこちら>>

SE
C#の変数宣言の方法と型推論について教えてください。

PM
プログラム中に扱う値やオブジェクトなどを保持するための変数の宣言について紹介します。

C#における変数の宣言


プログラミング言語が提供しなければならない機能として変数があります。今回は、プログラム中に扱う値やオブジェクトなどを保持するための変数の宣言について説明します。

C#は、言語仕様として静的型付け言語と呼ばれるプログラミング言語の1つとなっており、プログラム内で変数を使用する場合には、使用する前に変数宣言をする必要があります。

これは多くの状況において使用される変数の型がコンパイル時に決定され、チェックされることで、実行時のスピードを向上させることができる他、コンパイル時にエラーを発見することができるため、実際のアプリケーションの開発時に実行時のトラブルを事前に発見する事ができるようになります。

反対に、JavaScriptのように、実行時に変数の型が決定されるような言語を動的型付け言語といいます。

変数宣言の基本の形

C#では、変数を使用する状況によって変数宣言の形がいくつか変化しますが、基本的な形は以下のような形になります。

アクセス修飾子 変数の型 変数名 ( = 変数への初期値 );

アクセス修飾子は、主にクラスや構造体で使用されます。

変数の型は、C#がフレームワークとして提供する基本的な型の他、クラスや構造体のように開発者が型宣言をして作成した型を指定します。

使用する状況や開発環境であるC#のバージョンによって使用できるキーワードが異なっているため、自分が使用しているフレームワークのバージョンに注意をする必要があります。

それでは、C#における変数宣言において、各項目について説明します。

アクセス修飾子について

アクセス修飾子とは、宣言された変数のプログラム内での使用範囲(スコープ)について指定するために使用されます。

一般に変数宣言でアクセス修飾子を指定する場合は、以下の4種類とその組み合わせを設定することができます。

・クラスの内外で無制限のアクセスができます。
・同一アセンブリ、プロジェクト内でならpublicと同等です。
・protected : クラス内ではprivateですが、継承されたクラスからはアクセスできます。
・private : クラス内でのみアクセス可能です。

C#での変数宣言において、アクセス修飾子を使用するのはクラスや構造体内で使用する変数に、その変数をどの範囲でアクセスさせるのかを決定する際に使用します。

ローカル変数(メソッド内で使用される変数)では、自然と変数のスコープが決定されるため使われることはありません。

変数の型について

変数の型には、大きく分けて値型参照型があります。

これらの違いは、宣言された変数が実際に変数内にデータが格納されるか、それともそのデータへの参照(データへのアドレス)が渡されるかの違いになります。

よく使われる値型や参照型には以下のようなものがあります。

値型
・整数型(byte, sbyte, ushort, short, uint, int, ulong, long)
・浮動小数点型(float, double)
・ブール型(bool)
・列挙型
・構造体型(charを含む)

参照型
・文字列型(string)
・デリゲート型
・dynamic型
・classで宣言される型

配列の宣言

配列は、ある特定の型を複数個含む変数のことです。

C#では、一次元配列・多次元配列・ジャグ配列の3種類があります。C言語や、C++言語のようなプログラミングと違い、C#では配列は種類に関係なくすべて参照型となります。

各配列の変数宣言には、変数型に続いて、[]キーワードを使用して変数宣言を行います。

変数名について

変数名には、使用する目的や状況によってプログラマー自身が自由につけることができますが、C#を含む.Net APIでは、その全体で使用される変数名の命名規則というものがMicrosoftによって定められています。

C#を使用したフレームワークで開発するにあたり、一貫性のある名前付けを行うことは、チームで仕事をする上での生産性にも大きく関わる部分になります。

C#での変数宣言の際の名前付けの規則としては、Pascal形式やキャメル形式などがあります。

Pascal形式 キャメル形式
PascalCasing pascalCasing
CamelCasing camelCasing

表のようにPascal形式では、単語ごとの先頭を大文字にするのに対し、キャメル形式では先頭の単語を小文字に、次の単語をつなげる際には大文字から始まるようにして変数名を命名します。

型推論とはなにか

varによる型推論での変数宣言

varキーワードは、C#3.0から追加された型推論と呼ばれる機能を使用したものになります。

varキーワードを使用した変数は、その初期化される値に応じてコンパイラが型を推論して決定してくれます。

JavaScriptの経験がある方は、このvarキーワードによる変数宣言には馴染みがあるかもしれません。しかし、一見同じように使われているので誤解されることがあるのですが、先にも述べたとおりC#は静的型付けがされるプログラミング言語である(コンパイル時に使用する変数の型が決定される)ため、JavaScriptと同じように動作はしません。

varで変数宣言したものに異なる型の値を代入した場合、コンパイルエラーが発生します。

varを使うべきかどうか?

varによる型推論は開発者にとって便利で強力な機能ではありますが、乱用される恐れもあるため注意が必要です。特にプログラミングでは、デバッグ、リファクタリング、機能修正のような作業も多く、コードを書くことよりも読むことの方に時間を使う傾向にあります。

この傾向を考えると、varを多用することはコードを読む人間にとっては使用されている変数の型をコードを見るごとに自分で考えなければならないため、結局は時間がかかってしまうことになりますので、どこでもvarを使って変数宣言をするのはやめましょう。

ただし、いくつかの点でvarキーワードを使用した変数宣言をしたほうが良い場合もあります。

その他の状況でvarが必要となるのは、匿名型と呼ばれる型を使用する際になります。

匿名型はその名前が示すとおりに実際に型名を書くことがきませんので、このような場合にはvarを使う必要があります。(C#3.0でvarキーワードが追加されたのはこのためです。)

SE
C#の変数宣言についてよく理解できました。

PM
基本を守ることで仕事の生産性もアップしますよ。

C#における変数宣言のまとめ

C#の基本である変数宣言について、以下のことを説明しました。

アクセス修飾子 変数の型名 変数名 (= 初期化したい値);

主な注意点としては以下のとおりです。

・アクセス修飾子は、クラスや構造体内での宣言時に使われます。
・変数の型名には、値型と参照型があり、変数に格納されるデータが違うので注意が必要です。
・変数名は、開発チーム内で規約がない限りは、.Netのルールに則った形式を守ります。
・コンパイラが型を推論してくれるvarキーワードは、コードを書く側には便利な機能ですが、乱用するとその後の可読性を損なうので使用には注意が必要です。

プログラミング言語において、変数の宣言や変数の命名は、基本でありながら開発者としてのスキルや経験が出る場所です。基本を守ることでチームでの仕事の生産性の向上にもつながりますのでしっかりと押さえていきましょう。


FEnetへの登録は左下のチャットが便利です 経験者優遇! 最短10秒!

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

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

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

Search

Popular

reccomended

Categories

Tags