Путаница в использовании массивов в C#

#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. Я тоже думал об этом, но этот мой профессор не хочет использовать то, что он не охватил! по крайней мере, он хочет быть справедливым в отношении навыков других студентов! Еще раз спасибо!