2009-03-20 7 views
1

C#4オプションのパラメータ実装はVB.NETと同じですが、オプションパラメータはコールサイトでコンパイルされます(バージョン管理の問題を引き起こす可能性があります)。C#4オプションパラメータ

答えて

4

Yes

+2

これはC#に深刻な弱点を追加します。オプションがコールサイトでオーバーロードではなく実装されているという事実は、オプションのパラメータが変更された場合、相互に構築されていないアセンブリは機能しません。私はそれがなぜ必要なのか分からない。オーバーロードは、同じ機能とメソッドを提供します。シグネチャは不可視に変更されません。 – stevehipwell

+0

デフォルト値は、関数の定義の一部です。それを変更することは、関数の名前を変更することと同じくらい悪いことです。これは、オプションがオプションのパラメータを介して公開されているときのように、デフォルトが過負荷に焼き付けられたときと同じです。 –

3

SamNgによると、C#'s default arguments are is compiled at the call siteは、C++のデフォルトパラメータと似ています。

はい、バージョンの問題が発生します。ただし、オプションのパラメータを使用すると意味があります。多くの場合、これはnullまたはデフォルト生成クラスをメソッドまたはコンストラクタに渡すことを意味します。

+0

FIXME:Sam Ngとは誰ですか?彼はM $開発者ですか? – strager

+1

blogs.msdn.comのすべてのブロガーはMSの従業員(多分いくつかはMVPですか?)だと思います。 –

関連する問題