如何在c#中动态添加类实例

时间:2013-07-10 13:16:12

标签: c# .net class windows-phone-7

我要问的可能是愚蠢的。

代表: 我有两个类,比如

public class Login
{
    public String Username;
    public String Pwd;
    public address address1;
}    

Address.cs

public class address
{
    public String location;
    public string phonenumber;
}

我可以使用address2和address3作为类Address的实例在运行时使用for循环来增加类Login的成员。可以这样做..我有一个像这样使用的api,而不是使用地址作为列表/数组。如果我感到困惑,请告诉我..提前谢谢。

3 个答案:

答案 0 :(得分:2)

  

我可以使用address2和address3增加类Login的成员作为类地址的实例在运行时使用for循环。

没有。如果您需要多个地址,则应将类更改为具有集合的地址而不是单个字段。您无法在执行时向对象添加字段。我建议使用List<Address>

此外,我强烈建议使用属性而不是公共字段,并遵循.NET naming conventions

您公开集合的具体方式取决于您,但我要么通过readonly属性公开List<Address>,要么公开AddAddress和{{的方法1}}。我还试图使RemoveAddress本身不可变,构造函数采用它的所有方面,例如。

Address

答案 1 :(得分:1)

您应该创建一个address类数组:

public class Login
{
    public String Username;
    public String Pwd;
    public address[] address;
} 

然后使用它们:

Login l = new Login();
l.address = new address[3];
l.address[0].location = ...
l.address[2].phonenumber = ...
l.address[1].location = ...
l.address[2].location = ...
...etc...

答案 2 :(得分:0)

尝试使用Dictionary,例如

class Something
{
   public string Username;
   public string Password;
   public Dictionary<string,address> Address;

   public Something(string username, string password)
   {
      this.Username = username;
      this.Password = password;
      this.Address = new Dictionary<string, address>();
   }
}

像这样添加新变量:

void example()
{
     var Something x = new Something("username", "password");
     x.Address.Add("Address1",new address());
     x.Address.Add("Address2",new address());
     x.Address.Add("Address3",new address());
     x.Address.Add("Address4",new address());
     //next address what you want
}

参考: Set array key as string not int?