Например, System.IO.Path.Combineметод в .NET имеет следующие перегрузки:
Combine(params String[])
Combine(String, String)
Combine(String, String, String)
Combine(String, String, String, String)
Какой смысл последних трех?
Первый будет охватывать их все, как будто вы смотрите внимательно, он использует paramsключевое слово. Аргумент обратной совместимости будет охватывать только Combine(String, String)вариант, так как это была единственная версия до .NET 4.
Combineс нулевым или одним сегментом пути даже не имеет смысла, ноparamsверсия позволяет вам это делать.