У меня есть класс под названием Block, в котором есть метод Draw. Я хочу создать функцию, которая рисует группу блоков одновременно. Поскольку некоторые группы представляют собой массивы, а некоторые — списки, мне пришлось добавить перегрузку, которая по сути делает то же самое, что и базовая функция, но принимает параметр другого типа. Есть идеи, как улучшить этот код?
public static void DrawAll(Block[] arr) {
foreach(Block b in arr)
b.Draw();
}
public static void DrawAll(List arr) {
foreach(Block b in arr)
b.Draw();
}
Я пытался изучить Generics, но не могу выполнить итерацию по T, поскольку компилятор не знает, что это набор блоков.< /p>
// Doesn't work
public static void DrawAll(T arr) {
foreach(var b in arr)
b.Draw();
}
Использование ключевого слова is и приведение также не работает, потому что, насколько я понимаю, вы не можете сделать два разных приведения в тот же оператор if. Поэтому мне придется разделить приведения, и это только ухудшит внешний вид кода:
// Even dummer than just doing the overload
public static void DrawAll(T arr) {
if (arr is Block[] blocksA)
foreach(Block b in blocksA)
b.Draw();
else if (arr is List blocksL)
foreach(Block b in blocksL)
b.Draw();
else throw new Exception("not a collection of blocks");
}
Подробнее здесь: https://stackoverflow.com/questions/788 ... ad-methods
Более разумный способ перегрузить методы? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Есть ли разумный способ объединить два DataFrame на основе критериев подстроки?
Anonymous » » в форуме Python - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Каков разумный способ показать многие тысячи позиций на геодезической карте?
Anonymous » » в форуме Python - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Есть ли разумный способ написать внешнюю библиотеку Python с вызовами mssparkutils?
Anonymous » » в форуме Python - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Есть ли разумный способ написать внешнюю библиотеку Python с вызовами mssparkutils?
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-