动态构建Web服务的数组

我正在使用C#和asp.net来查询Web服务。

用户将输入访客数量,然后我需要将该数量的访客添加到Web服务呼叫中。 像这样手动创建客人工作。

// 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 }; 

用户在我的网站搜索页面上选择成人的数量,我不知道成人的数量,并希望能够将它们动态添加到Web服务调用。 我将收到这样的成年人数量

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

我尝试了很多方法,但无法让它发挥作用

 List guests = new List(); for(int i=0; i 

在这种情况下,我建议使用List而不是数组。 如果仍然需要将数组作为数组填充,则可以将其转换为数组。

所有其他答案都建议使用List并且通常我同意 – 但在这种情况下确实没有必要,因为它似乎事先知道大小:

 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如果它在任何方面都更方便 - 只是使用List的(可能)最大的好处是你不需要知道大小预先。 因为这里没有相关性(除非我遗漏了什么),没有多少理由使用列表。

而不是使用原始数组,为什么不使用ArrayList或List

 var list = new List(); 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(); 

我建议你使用List 。 您可以在创建时使用访客数初始化大小,但这实际上只是一种优化。 如果您想稍后添加更多访客,则可以执行此操作,并且List将根据需要resize。

如果您希望由于某种原因将列表转换为数组,则List具有ToArray()方法。