2013-11-17 3 views
1

Перегруженные методы, возвращающие разные типы данных, хорошие или плохие?Правильный подход к перегрузке метода

Я понимаю перегрузки не может быть сделано на типы возвращаемых значений, что я имел в виду, следящая за

1) T Create(T) 

2) List<T> Create(List<T>) 

Я думаю, было бы нелогичным, если перегруженный метод возвращает различные типы данных, хотел бы иметь мысли от других?

Я вижу такой подход, который следует в каркасе .Net (где метод расширения).

Я понимаю, что этот вопрос может закрыться, поскольку для этого не было бы никакого да/нет, но я хотел бы услышать, как люди подходят к этому?

Приветствия, Авинаш

ответ

1

Я не советовал бы. Конечно, вы можете это сделать, но вы никогда не узнаете, что будет возвращенным значением.

Это несколько сбивает с толку, когда вы видите

var value = YourClass.Create(AnotherClass.GetResult()); 

уверен, вы могли бы заменить var с фактическим типом вы ожидаете, или добавить <Type> после Create указать, что перегружать вы хотели бы использовать.

Лично я хотел бы пойти на

T Create<T>(T values) 
List<T> CreateMany<T>(List<T> values) 

Это гораздо яснее и, когда кто-то читает код сразу видно, что вы пытаетесь сделать.

+0

«Это гораздо яснее, и когда кто-то читает ваш код, сразу становится ясно, что вы пытаетесь сделать». - Правда – asolvent

Смежные вопросы