В тех случаях, когда у вас есть функция, которая работает для многих различных пользовательских типов с той же реализацией, это нормально использовать шаблон проектирования, как это ?:Одиночный метод для нескольких типов?
type1 implicitly casts to type0
type2 implicitly casts to type0
type3 implicitly casts to type0
Operate (type0)
и называют:
type1 a
type2 b
type3 c
Operate (a)
Operate (b)
Operate (c)
Есть ли проблемы с этой техникой? Производительность, четкость и т. Д.?
РЕДАКТИРОВАТЬ: Я также подразумеваю, что я использовал нестандартные заливки для типа без потери данных, просто удобство. Скажем, у вас есть класс Pixel, а затем отправьте экземпляр этого метода методу, который принимает Point2, автоматически отбрасывает пиксель в Point2.
Intellisense вам не поможет. Когда вы вводите метод Operate(), Intellisense сообщает только, что он принимает тип0. Вы не сможете сказать, что вы можете ввести тип1, если вы не откроете определение типа1. – foson
На самом деле он просто нажимает клавиши вверх и вниз для прокрутки перегрузок, как только Intellisense покажет вам метод. –
Очевидно, что это работает только для Visual Studio 2005 и выше, для любой другой среды IDE, и ваша точка может быть правильной. –