C# 使用 List 属性初始化类
本文关键字:属性 初始化 使用 List | 更新日期: 2023-09-27 17:55:48
我需要一些关于如何使用 Main 方法中的一些示例值初始化以下对象的帮助来执行某些操作。
由于我是C#的新手,请指导我在哪里可以获得此信息
class MobOwner
{
public string Name { get; set; }
public List<string> Mobiles { get; set; }
}
只需在构造器中初始化它:
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}
};