BT

C#の機能:オプションおよび名前付きパラメータ、COM相互運用性

| 作者: Jonathan Allen フォローする 595 人のフォロワー , 翻訳者 編集部 フォローする 0 人のフォロワー 投稿日 2008年11月4日. 推定読書時間: 2 分 |

顧客からの強い要望により、Andersは「折れて」、C#でオプションおよび名前付きパラメータを可能にした。VBのように、デフォルト値を含めることで、オプションパラメータはサポートされる。またVBがそうであるように、要求されたパラメータはすべて、オプションパラメータの前に来る必要がある。

名前付きパラメータも、完全サポートされる。これによりデベロッパは、適合すると思う任意の順序で、パラメータを指定することができる。これは、通常のパラメータ同様にオプションパラメータと機能し、オプションパラメータを取り扱う場合に見られる。

引数として使用される式を解決するとき、関数の署名の命令を無関係にしているコードによって命令は厳密に決定される。非推奨であるが、副次作用のある式は、引数としておおよそ安全に使用できることを意味する。

COMライブラリは、タイプオブジェクトとして値を返す好ましくない傾向がある。これに取り組むために、C# 4は自動的にCOMで戻されたすべてのオブジェクトを「動的」タイプ(参考記事)に働きかける。以前の記事で触れたように、これによりデベロッパが手ですべての必要な リフレクションコードを記述したかのようなオブジェクトのlate-boundコールを可能にする。

セマンティクスが実際に必要でない限り、「ref」修飾子は、COMコールにとってもはや不要となる。

最後に、これはかつては以下のようなコードであったことを意味する。

//C# 3
var a = (IFoo) obj.Foo(ref missing, ref missing, 
                       ref missing, ref missing, 
                       ref missing, 5, ref missing, 
                       ref missing, ref missing);
var b = (IBar)a.Bar();
var c = b.Value;

//C# 4
dynamic obj = //some COM or DLR object
var c = obj.Foo(clientId := 5).Bar().Value

パラメーター化プロパティに関するうわさもあった。それについての情報を得次第、更新していく。

 

原文はこちらです:http://www.infoq.com/news/2008/10/CSharp-Optional

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT