C#使用List <t>属性初始化Class

时间:2016-07-07 11:59:14

标签: c# initializer-list

需要您的帮助,了解如何使用Main方法中的一些示例值初始化下面的对象以执行某些操作。

因为我是c#的新手请指导我在哪里可以获得这些信息

class MobOwner
{
   public string Name { get; set; }
   public List<string> Mobiles { get; set; }
}

6 个答案:

答案 0 :(得分:3)

只需在您的constrcutor中初始化它:

class MobOwner
{
    public string Name { get; set; }
    public List<string> Mobiles { get; set; }
    public MobOwner() {
        this.Mobiles = new List<string>();
    }
}

您还可以定义一个构造函数,direclty将正确的值放入列表中:

class MobOwner
{
    public string Name { get; set; }
    public List<string> Mobiles { get; set; }
    public MobOwner(IEnumerable<string> values) {
        this.Mobiles = values.ToList();
    }
}

你可以打电话给new MobOwner(new[] { "Mario", "Hans", "Bernd" })

答案 1 :(得分:1)

你可以制作和实例并设置变量

var owner = new MobOwner();
owner.Mobiles = new List<string>{"first", "second"};

或者像这样

var owner = new MobOwner {Mobiles = new List<string> {"first", "second"}};

推荐的方法是使用一个构造函数并将set属性设为私有

class MobOwner
{
    public string Name { get; private set; }
    public List<string> Mobiles { get; private set; }
    // constructor
    public MobOwner(string name, List<string> mobiles)
    {
        Name = name;
        Mobiles = mobiles;
    }
}

答案 2 :(得分:1)

首先,我怀疑你是否真的想在set;属性中Mobiles: 通常我们在列表中添加/更新/删除项目,但不将列表整体分配

  MobOwner sample = new MobOwner(...);

  sample.MobOwner.Add("123");
  sample.MobOwner.Add("456");
  sample.MobOwner.RemoveAt(1);
  sample.MobOwner[0] = "789";

  sample.MobOwner = null; // we, usually, don't want such code

实施可以

 class MobOwner {
   public string Name { get; set; } 
   public List<string> Mobiles { get; } = new List<string>();

   public MobOwner(string name, IEnumerable<string> mobiles): base() {
     if (null == name)
       throw new ArgumentNullException("name");

     if (null == mobiles)
       throw new ArgumentNullException("mobiles");

     Name = name;

     Mobiles.AddRange(mobiles); 
   }
 }

答案 3 :(得分:0)

这会创建一个MobOwner对象,其中包含一个包含一个项目的列表

MobOwner item = new MobOwner()
{
    Name = "foo",
    Mobiles = new List<string>() { "bar" }
};

另一种方法是添加构造函数以简化实例化

class MobOwner
{
    public string Name { get; set; }
    public List<string> Mobiles { get; set; }

    public MobOwner(string Name, params string[] Mobiles) 
    {
        this.Name = Name;
        this.Mobiles = new List<string>(Mobiles);
    }
}

用法:

MobOwner item2 = new MobOwner("foo", "bar", "bar");

答案 4 :(得分:0)

var mobOwner = new MobOwner()
   {
       Name = "name";
       Mobiles = new List<string>()
           {
               "mob1",
               "mob2",
               "mob3"
           };
    };

答案 5 :(得分:0)

如果我正确理解你的目的,你想在“Main”方法中初始化这些值。

构造函数是在创建类的实例时使用默认值初始化属性的好方法。 但是,如果您想在另一个地方初始化它们,请创建您的类的实例,然后您可以为其公共成员赋值。像这样:

MobOwner mobOwner = new MobOwner();
mobOwner.Name = "Jimmy";
mobOwner.Mobiles = new List<string>{119, 011};

或者以更现代的方式,您可以像这样更改语法(尽管它们是相同的):

MobOwner mobOwner = new(){
    Name = "Jimmy",
    Mobiles = new List<string>{119, 011}
};