动态构建Web服务的数组

时间:2009-04-09 18:45:59

标签: c# arrays web-services

我正在使用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);

我已经尝试了很多方法,但无法让它工作

5 个答案:

答案 0 :(得分:6)

List<Guest> guests = new List<Guest>();
for(int i=0; i<numberOfGuests; i++)
{
  guests.Add(new Guest()
  {
    Title = "Mr",
    Firstname = "Test",
  });
}
return guests.ToArray();

答案 1 :(得分:2)

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

答案 2 :(得分:2)

为什么不使用ArrayList或List&lt; Object&gt;?

,而不是使用原始数组
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();

答案 3 :(得分:2)

所有其他答案都建议使用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>的(可能)最大好处是你不需要事先知道大小。因为这里没有相关性(除非我遗漏了什么),没有太多理由使用列表。

答案 4 :(得分:0)

我建议您使用List<Guest>。您可以在创建时使用guest虚拟机数初始化大小,但这实际上只是一个优化。如果您想稍后添加更多访客,则可以执行此操作,List将根据需要调整大小。

如果您出于某种原因想将列表转换为数组,则

List会有ToArray()方法。