Как передать список значений в функцию, где значения уже сохранены в списке, а функция не является одинаковой каждый раз?Передача элементов списка в функцию
Чтобы объяснить, у меня есть список нескольких различных типов пользовательских объектов (A List<object>
, чтобы сделать это), и я хочу передать эти объекты в функцию. Однако функция не всегда одна и та же. Я мог бы иметь несколько различных функций, и, полагая, что содержимое List всегда будет соответствовать входным переменным функции, я хочу, чтобы передать содержимое списка в мою функцию.
Следующий код является примером того, что может работать, но один недостаток:
List<object> myListOfVariables = new List<object>();
myListOfVariables.Add("Hello, world!");
myListOfVariables.Add(10);
void SayHelloXTimes(string helloString, int x) {
for(int i = 0;i<x;i++) {
print(helloString)
}
}
SayHelloXTimes(myListOfVariables[0], myListOfVariables[1]);
Теперь, так как я знаю, что мой список всегда будет содержать нужное количество переменных в правой позиции, что будет работать , если бы у меня была только одна функция. Но проблема в том, что мне нужно расширить это, чтобы я мог разделить мой список и передать его в функции с разными параметрами.
По другим причинам, я знаю, что мой список всегда будет иметь правильное количество переменных в правильных положениях, поэтому нам не нужно об этом беспокоиться. Я также знаю имя функции, в которой мне нужно передать мои значения. Я предполагаю, что я мог бы сделать загрузку из if
операторов в зависимости от длины моего списка, как это:
if (myListOfVariables.Length == 2) {
SayHelloXTimes(myListOfVariables[0], myListOfVariables[1]);
}
else if (myListOfVariables.Length == 3) {
SayHelloXTimesForY(myListOfVariables[0], myListOfVariables[1], myListOfVariables[2]);
}
Однако это (очевидно) действительно неуклюжий код, и я хотел бы избежать этого любой ценой. Есть ли другое решение моей проблемы? Я знаю, что это действительно запутывает, но я сделал все возможное, чтобы объяснить это. Если вы все еще в замешательстве относительно того, что я пытаюсь сделать, сообщите мне.
И нет, это не проблема домашних заданий. ;)
Почему бы вам просто не перечислить сам список? – BrokenGlass
Я бы сделал это в одно мгновение, но не могу по причинам, которые потребуют от пяти до десяти абзацев объяснить. :) Короче говоря, я (пытаюсь) создать очень простой API для чего-то, и я не хочу ограничивать потенциальных пользователей использованием списков объектов для их параметров функции. –
Я не уверен, что это такое, поэтому я пока не допущу этого. Мне придется искать IEnumerables, когда у меня будет время, и вернемся к вам. –