#c# #arrays
#c# #массивы
Вопрос:
возможно ли принять более одного целого в качестве переменных, а затем изменить его на массив! например, пользователь вводит более одного имени, но не определяет, сколько имен он должен ввести, и когда я получу имена, я изменю их на массив, возможно ли это?
Спасибо!
Комментарии:
1. Как пользователь вводит имена?
2. Что вы подразумеваете под «принимать более одного целых значений в качестве переменных»? Требуется ли для вашего ввода данных отображать динамическое количество полей ввода или вы хотите разделить произвольный ввод из одного поля на несколько переменных (например, разделение запятой или что-то еще)? В конечном счете, ваши результаты могут быть сохранены в List<T> или в массиве фиксированной длины (создается, как только вы узнаете, сколько элементов у вас есть).
3. @MiguelAngelo например, в качестве подсказки приложение просит пользователя ввести название своей любимой песни..
4. @DanC Спасибо, да, это так, и я постараюсь разделить их и посмотреть, что я могу с этим сделать!
Ответ №1:
В .NET массивы имеют фиксированную длину. Если вы хотите иметь возможность динамически добавлять элементы в список, вы можете использовать List<T>
класс.
Например:
List<string> names = new List<string>();
Теперь вы можете начать добавлять элементы в список:
names.Add("foo");
names.Add("bar");
names.Add("baz");
И вы также можете получить соответствующий массив фиксированной длины, используя ToArray()
метод:
string[] namesArray = names.ToArray();
Комментарии:
1. И если вам действительно, действительно, нужен массив, используйте toArray() метод List .
2. Спасибо, Дарин, это очень интересный подход!
3. Опоздал на вечеринку, но
ToArray()
это не методList
, а скорее метод расширенияIEnumerable<T>
, которыйList<T>
реализует.
Ответ №2:
Я думаю, что вы ищете param object []
. Он используется для неопределенного числа или параметров в функции. Ваша функция будет выглядеть следующим образом:
public static void SayHello(params string[] names){
foreach(var name in names){
Console.WriteLine("Hello " name);
}
}
И вы могли бы назвать это так:
SayHello("Bob", "Bill", "Susan");
SayHello("Jenny");
Ответ №3:
Если пользователь собирается ввести более одного имени, я предлагаю вам создать список строк вместо массива.
Комментарии:
1. Я тоже думал об этом, но этот мой профессор не хочет использовать то, что он не охватил! по крайней мере, он хочет быть справедливым в отношении навыков других студентов! Еще раз спасибо!