たとえば、.NETの_System.IO.Path.Combine
_メソッドには次のオーバーロードがあります。
_Combine(params String[])
Combine(String, String)
Combine(String, String, String)
Combine(String, String, String, String)
_
最後の3つのポイントは何ですか?
最初のものはすべてをカバーします。よく見ると、params
キーワードを使用しているようです。 .NET 4までの唯一のバージョンであるため、下位互換性の引数はCombine(String, String)
バリアントのみをカバーします。
主な理由はパフォーマンスです。 「無制限の引数」構文シュガーは、実際には文字列の配列です。 1つの文字列のみを渡す場合、なぜ1つの文字列だけで配列を作成するのですか?特に、このメソッドの呼び出しの〜90%が3つ以下の引数で行われる場合、より重い重み配列オブジェクトの必要はありません。メソッドを定義するためにループが必要ないため、メモリが少し軽く、処理時間が少し短くなります。 3つの文字列がある場合は、3つの文字列をコーディングするだけです。
構文糖。
ファイルパスを操作する場合、少数の固定値を持つことは非常に一般的です。このような場合は、配列にパッケージ化するよりも、直接使用する方が便利です。