C# 使用 List 属性初始化类

本文关键字:属性 初始化 使用 List | 更新日期: 2023-09-27 17:55:48

我需要一些关于如何使用 Main 方法中的一些示例值初始化以下对象的帮助来执行某些操作。

由于我是C#的新手,请指导我在哪里可以获得此信息

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

C# 使用 List<T> 属性初始化类

只需在构造器中初始化它:

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

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

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" })一样打电话

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

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

您可以创建、实例化和设置变量

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

或类似

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

推荐的方法是使用构造器并使设置的属性私有

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;
    }
}
var mobOwner = new MobOwner()
   {
       Name = "name";
       Mobiles = new List<string>()
           {
               "mob1",
               "mob2",
               "mob3"
           };
    };

这将创建一个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");

如果我正确地理解了您的目的,您希望在"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}
};