C# 4.0:最新トレンドをマイクロソフト 大野元久氏が解説

杉山貴章(オングス)
2009-01-29 19:10:01
  • このエントリーをはてなブックマークに追加

省略可能な名前付きパラメータ

 省略可能なパラメータを持ったメソッド作りたい場合、従来であればまず必須パラメータのみのメソッドを用意し、それをオーバーロードする形でその他のパラメータを持つメソッドを定義するのが一般的な方法だった。

 C# 4.0ではパラメータにデフォルト値を指定することが可能となり、呼び出し時に省略された場合にはそのデフォルト値が自動で設定されるようになるという。それに加えて、呼び出し時に引数を名前付きで渡すことができるようになるため、引数の指定順序を意識する必要がなくなる。

 具体的にはリスト3のようなメソッドの宣言と呼び出しが可能になるとのこと。この場合、path以外のパラメータは省略可能となる。また引数を名前付きで指定する場合には、名前付き引数は最後(名前無し引数の後)に配置しなければならない代わりに、指定順序はバラバラでもよい。ただし、引数の評価は指定順に行われるため注意が必要とのことだ。

リスト3 省略可能な、名前付きパラメータの使用例

// 省略可能なパラメータを含むメソッドの宣言
public StreamReader OpenTextFile( 
       string path, 
       Encoding encoding = null, 
       bool detectEncoding = true, 
       int bufferSize = 1024);

// パラメータを省略しての呼び出し
OpenTextFile("foo.txt", Endofing.UTF8);

// 名前付き引数を使った呼び出し
OpenTextFile("foo.txt", Endofing.UTF8, bufferSize: 4096);

// 名前付きの引数では順序は無関係
OpenTextFile(
bufferSize: 4096, 
path: "foo.txt",        // 省略可能でないパラメータは常に指定しなければならない
detectEncoding: false);

COM相互運用性の改善

 上記2つの新機能が導入されることにも関連して、COM相互運用性も大幅に改善される予定だという。具体的には次のような改善点が挙げられた。

  • オートメーションオブジェクトからダイナミックオブジェクトへのマッピング
  • 省略可能な名前付きパラメータ
  • インデックスされたプロパティ
  • 省略可能な「ref」修飾子
  • 組み込みの相互運用型(非PIA)

 これによってCOM相互運用のためのコードが非常にシンプルに記述できるようになるとのこと。セッションではC#からExcel、そしてWordへの連携が非常にシンプルかつシームレスに行える様子が紹介された。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]