Всё хорошо. Ваш пример, конечно, немного тривиален, но рассмотрим другие ситуации, когда метод может обеспечить перегрузки (используя string.Substring в качестве примера ... метод pretend не существует).
public static class Foo
{
public static string Substring(this string input, int startingIndex)
{
return Foo.Substring(input, startingIndex, input.Length - startingIndex);
// or return input.Substring(startingIndex, input.Length - startingIndex);
}
public static string Substring(this string input, int startingIndex, int length)
{
// implementation
}
}
Вызов перегрузок, очевидно, позволяет вам максимально сохранить свою логику, не повторяя себя. Это верно в методах экземпляра, это верно в статических методах (включая, соответственно, методы расширения).