.NET TIPS 手軽にプロパティを実装するには?[C#、VS 2008、3.5]デジタルアドバンテージ 一色 政彦2008/05/01 |
|
Visual Studio 2008(厳密には.NET Framework 3.5)のC#(=Visual C# 2008)では、「プロパティの自動実装」(Automatic Implementation of Property)という機能が搭載され、効率的にプロパティを実装できるようになっている。
例えば従来(=Visual Studio 2005以前)では、プロパティは次のように記述していた。
|
|
Visual Studio 2005以前における通常のプロパティ記述 |
これをVisual Studio 2008の「プロパティの自動実装」機能による記述に書き換えると、次のようになる。
|
|
Visual Studio 2008における「プロパティの自動実装」によるプロパティ記述 |
要するに、Visual Studio 2005以前ではプロパティを実装する際に(基本的に)上記コードの「myVar」のようなフィールド変数が必要となるが、Visual Studio 2008ではこのようなフィールド変数を省略して純粋にプロパティのみを記述できるというわけだ。なお、「プロパティの自動実装」機能を使用したプロパティ(以降、自動実装するプロパティ)にデータを設定したり取得したりするには、フィールド変数が存在しないため、クラス内部からであっても常にプロパティを使う(=経由する)必要がある。
自動実装するプロパティに関する注意点
自動実装するプロパティでは、前述のとおり、フィールド変数が省略されているが、これは文字通り「コード上の記述が省略されているだけ」で、コンパイル時に内部でフィールド変数が追加されている。この作業はVisual Studio 2008(.NET Framework 3.5)のコンパイラが自動的に行ってくれるため、開発者が意識する必要はない。
また、Visual Studio 2008(のIDE)ではプログラムを.NET Framework 2.0や3.0にも対応させられるが(マルチターゲティング機能)、この際に.NET Framework 2.0や3.0を選択していても、自動実装するプロパティを利用したプログラムは正常にコンパイルできる(どうやらVisual Studio 2008のコンパイラは[対象のフレームワーク]として.NET Framework 2.0や3.0が選択されているときでも、「プロパティの自動実装」機能を働かせてくれるようだ)。なお、自動実装するプロパティを利用したコードを、C# 3.0のコンパイラ(=.NET Framework 3.5に付属するC#のコンパイラ。csc.exeファイル)でコマンドラインによりコンパイルする場合は問題ないが、C# 2.0のコンパイラ(=.NET Framework 2.0に付属する.NET Framework 2.0および3.0のC#のコンパイラ)でコマンドラインによりコンパイルすることはできない。このため、C# 2.0のコンパイラでコマンドラインによりビルドする可能性がある場合は、「プロパティの自動実装」機能を使用できないので注意してほしい。
自動実装するプロパティを手軽に記述するには?
自動実装するプロパティを記述するには、コード・エディタ上で「prop」と入力してコード・スニペット機能を活用すると便利だ。実際の手順は、次の画面を参考にしてほしい。
(「prop」と入力すると、IntelliSenseが表示される) |
([Tab]キーを押すと、自動実装するプロパティの記述が追加される) |
([Tab]キーを押すことで、色が付いているカスタム部分へ移動できる) |
自動実装するプロパティを手軽に記述する手順 |
このようにして記述した自動実装するプロパティでは、getアクセサ(getter)とsetアクセサ(setter)の両方が追加されるが、この片方を消すようなことはできないので注意してほしい。読み取り専用や書き込み専用のプロパティを作りたい場合には、getアクセサやsetアクセサの前に「private」アクセス修飾子を記述して(=クラス外部からgetアクセサやsetアクセサにアクセスできないようにして)対応すればよい。
利用可能バージョン:.NET Framework 3.5 カテゴリ:Visual Studio 2008 処理対象:IDE カテゴリ:C# 処理対象:言語構文 |
|
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|