私の人生の間、私は一見オプションパラメータがどのように使用されているか分かりません。それで、どのような種類のプログラムが使われるのですか?同じことが名前付きパラメータにも当てはまりますが、私はどちらかを完全に把握できないようです。私はオプションパラメータがオーバーロードされたメソッドの量を抑えるのを助けることを知っています。それについてのこと。誰かが、これらが使用されている/使用方法を完全に理解できるように助けることができたら、私はそれを高く評価します。C#4.0でオプション/名前付きパラメータを使用する方法
答えて
オプションパラメータは、オプションパラメータの名前です。
非常に重要なことは、パラメータのデフォルト値が呼び出しコードにコンパイルされることだけです。 これは、パラメータのデフォルト値を変更した場合でも、呼び出し元のアセンブリを再コンパイルする必要があることを意味します。そうでなければ、以前のデフォルト値を引き続き使用します。
多くの異なるオブジェクトが呼び出す可能性があるメソッドでは、通常、オプションのパラメータを使用します。あなたが検索を処理するアプリケーションを持っている場合たとえば、あなたは、ページネーションについて考え始めると25件の結果にそれをデフォルトにしたいが、まだ呼び出し側はそれを決定することを可能にしてできたかもしれないあなたに
List<string> SearchStuff(string searchString, Date startDate, Date endDate);
その後のparamsを持っているかもしれませんオプションのパラメータを使用して次のようにしてください。
List<string> SearchStuff(string searchString, Date startDate, Date endDate, int pageSize = 25);
表示できるpageSizeは値を設定することでオプションです。呼び出し元はpageSizeを渡すことができます。必要な場合は省略できますが、デフォルト値が使用されます。
名前付きパラメータについては、C#で(またはあなたができる場合でも)私はそれらを使用しているかどうかはわかりません。しかし、Objective-Cで、彼らは常に使用されます。
- (NSString *) getThisFromInteger:(NSInteger)myInteger;
とメソッドを呼び出すときに、これはより多くのだろうC#のとは対照的に、それ
[self getThisFromInteger: 24];
を呼び出すときには、実際に名前付きパラメータを入力していますlike
self.getThis(24);
Johnは、オプションのパラメータの使用についてはうまく扱いますが、名前付きのパラメータの説明を追加します。オプションのパラメータが多数ある場合は、6番目のパラメータを指定する場合は2つの選択肢があります。特定のものを設定するために名前付きパラメータを使用することができます。
例:
public static void sendEmail(string to, string subject, string body, string[] attachmentFiles = null, bool isHTML = false, string onBehalfOf = "", MailPriority priority = MailPriority.Normal, string BCCAddress = null, bool isWeb = false)
私は自分の選択肢をメールで高い優先順位を送信したい場合は、次のとおりです。
// If we didn't have optional parameters
sendEmail("[email protected]", "Important!", "Something broke - fix it!", null, false, "", MailPriority.High, null, false)
// If we didn't have named parameters
sendEmail("[email protected]", "Important!", "Something broke - fix it!", null, false, "", MailPriority.High)
// Using both optional and named parameters to full advantage.
sendEmail("[email protected]", "Important!", "Something broke - fix it!", priority: MailPriority.High)
これら3つの最後には、後に使用して読み取ることがはるかに簡単です。