Динамически построить массив для веб-службы - PullRequest
1 голос
/ 09 апреля 2009

Я использую C # и asp.net для запроса веб-службы.

Пользователь введет количество гостей, а затем мне нужно добавить, что Количество гостей на веб-службу вызова. Создание гостей вручную, как это работает.

// Create room layout for searching

Guest adult = new Guest();
adult.Id = 1;
adult.Title = "Mr";
adult.Firstname = "Test";
adult.Surname = "Test";

Guest adult2 = new Guest();
adult2.Id = 2;
adult2.Title = "Mr";
adult2.Firstname = "Test";
adult2.Surname = "Test";

Guest[] adults = new Guest[] { adult,adult2 };

Пользователь выбирает количество взрослых на моих сайтах поиска страница, я не знаю количество взрослых и хочу иметь возможность динамически добавлять их в вызов веб-службы. Я буду получать количество взрослых, как это

int numberofguests = Convert.ToInt32(search.Guest);

Я пробовал множество способов сделать это, но не могу заставить его работать

Ответы [ 5 ]

6 голосов
/ 09 апреля 2009
List<Guest> guests = new List<Guest>();
for(int i=0; i<numberOfGuests; i++)
{
  guests.Add(new Guest()
  {
    Title = "Mr",
    Firstname = "Test",
  });
}
return guests.ToArray();
2 голосов
/ 09 апреля 2009

Все остальные ответы предлагали использовать List<Guest>, и обычно я бы согласился - но в этом случае действительно нет необходимости, так как кажется, что вы заранее знаете размер:

Guest[] guests = new Guest[numberOfGuests];
for (int i=0; i < numberOfGuests; i++)
{
    Guest guest = new Guest();
    // Fill in information about the guest here
    // based on the web form
    guests[i] = guest;
}

Это не значит, что вы не должны использовать List<Guest>, если это более удобно, в любом случае - просто (вероятно) самое большое преимущество использования List<T> заключается в том, что вы не Т нужно знать размер заранее. Поскольку это не имеет значения здесь (если я что-то упускаю), нет особой причины использовать список.

2 голосов
/ 09 апреля 2009

Вместо использования необработанного массива, почему бы не использовать ArrayList или List ?

var list = new List<Guest>();
adult.Id = 1;
adult.Title = "Mr";
adult.Firstname = "Test";
adult.Surname = "Test";
list.Add(adult);

Guest adult2 = new Guest();
adult2.Id = 2;
adult2.Title = "Mr";
adult2.Firstname = "Test";
adult2.Surname = "Test";
list.Add(adult2);

Guest[] adults = list.ToArray();
2 голосов
/ 09 апреля 2009

Я бы предложил использовать List вместо массива в этом случае. Вы можете преобразовать его в массив, как только он будет заполнен, если он все еще нужен как массив.

0 голосов
/ 09 апреля 2009

Я предлагаю вам использовать List<Guest>. Вы можете инициализировать размер с количеством гостей при его создании, но это на самом деле просто оптимизация. Если вы хотите добавить больше гостей позже, вы можете сделать это, и List изменит размер по мере необходимости.

List имеет метод ToArray(), если вы хотите по какой-то причине превратить список в массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...