私の人生では、オプションのパラメーターが何に使用されているのか理解できないようです。つまり、どのようなプログラムで、どのように使用されるのでしょうか? 同じことが名前付きパラメーターにも当てはまりますが、どちらも完全には把握できていないようです。オプションのパラメーターは、オーバーロードされたメソッドの量を抑えるのに役立つことを知っています。それはそれについてです。これらが何のために使用されているか、またはどのように使用されているかを完全に理解するのを誰かが手伝ってくれたら、私は大いに感謝します。
3 に答える
オプションのパラメーターは、その名前が何であるかです。オプションのパラメーターのことです。
非常に重要な唯一のことは、パラメーターのデフォルト値が呼び出し元のコードにコンパイルされることです。つまり、パラメーターの既定値を変更すると、呼び出し元のアセンブリも再コンパイルする必要があります。そうしないと、古い既定値が引き続き使用されます。
私は通常、多くの異なるオブジェクトが呼び出す可能性のあるメソッドでオプションのパラメーターを使用します。たとえば、検索を処理するアプリケーションがある場合、params がある可能性があります
List<string> SearchStuff(string searchString, Date startDate, Date endDate);
後でページネーションについて考え始め、デフォルトで 25 件の結果を希望するかもしれませんが、呼び出し元がそれを決定できるようにし、オプションのパラメーターを使用して次のように支援することができます。
List<string> SearchStuff(string searchString, Date startDate, Date endDate, int pageSize = 25);
表示される pageSize は、値を設定することでオプションになります。呼び出し元は、必要に応じて pageSize を渡すことができます。またはすべてを省略できる場合は、デフォルト値が使用されます。
名前付きパラメーターについては、C# で使用したことがあるかどうか (または使用できるかどうか) はわかりません。ただし、Objective-c では、それらは常に使用されます。
- (NSString *) getThisFromInteger:(NSInteger)myInteger;
メソッドを呼び出すときは、実際に呼び出すときに名前付きパラメーターを入力しています
[self getThisFromInteger: 24];
これはもっと似ているC#とは対照的に
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("me@me.com", "Important!", "Something broke - fix it!", null, false, "", MailPriority.High, null, false)
// If we didn't have named parameters
sendEmail("me@me.com", "Important!", "Something broke - fix it!", null, false, "", MailPriority.High)
// Using both optional and named parameters to full advantage.
sendEmail("me@me.com", "Important!", "Something broke - fix it!", priority: MailPriority.High)
これら 3 つのうち最後のものは、後で使用して読むのがはるかに簡単です。