Хобрук: Ваш путь к мастерству в программировании

Можно ли заставить функцию с несколькими параметрами разных типов принимать параметры в любом порядке без перегрузки?

Скажем, например, если есть функция, которая принимает 3 параметра всех разных типов:

public void myFunction (int myInt, double myDouble, bool myBool)
{
    //Some code here
}

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

myFunction(aBool, anInt, aDouble);
myFunction(aDouble, aBool, anInt);
etc..

  • Не так, как вы показываете, но вы можете ссылаться на параметры, чтобы установить их имена, которые IIRC позволяет вам указать их в произвольном порядке. 06.09.2014
  • короче от чего-то хакерского вроде public void myFunction(object[] args){} - не совсем.. 06.09.2014
  • Вы можете использовать имена параметров, см. пример ниже. 06.09.2014

Ответы:


1

Нет, напрямую нельзя. Есть несколько вариантов:

Вы можете использовать именованные параметры, чтобы разрешить произвольный порядок. Это сохранит проверку статического типа.

 myFunction(myBool:aBool, myInt:anInt, myDouble:aDouble);

Вы можете использовать params и потерять проверку типов. Вам нужно будет проверить типы передаваемых аргументов. Вот как JavaScript часто реализует функции с переменным числом аргументов:

public void myFunction (params object[] args)
{
    int myInt = args.OfType<int>().FirstOrDefault();
    ...
}

 myFunction(2.4, false, 3);
06.09.2014
  • это не params object[] args ? 06.09.2014

  • 2
  • ОП попросил способ сделать это без перегрузки. 06.09.2014
  • Новые материалы

    Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
    DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

    «Очень простой» эволюционный подход к обучению с подкреплением
    В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

    Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
    Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

    Фишинг — Упаковано и зашифровано
    Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

    ВЫ РЕГРЕСС ЭТО?
    Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

    Не зря же это называют интеллектом
    Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

    LeetCode Проблема 41. Первый пропущенный положительный результат
    LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..