我有以下课程
MyClass
{
public int Id {get;set;}
public string Name {get;set;}
public List<string> FriendNames {get;set;}
public MyClass()
{
FriendNames = new List<string>();
}
}
像我一样初始化List是正确的还是
this.FriendNames = new List<string>;
有什么不同吗?
然后在我的代码中,我可以创建一个像
这样的实例MyClass oMyClass = new MyClass();
oMyClass.Id = 1;
oMyClass.Name = "Bob Smith";
oMyClass.FriendNames.Add("Joe King");
答案 0 :(得分:0)
没有真正的区别。所以归结为偏好。
有些人喜欢,因为它非常明确并且自我评论。其他人则觉得它使代码混乱。
重要的是你要在构造函数中实例化List
。太多人忘了做的事情。
此SO问题中接受的答案有一个很好的列表,列出何时使用this
关键字
答案 1 :(得分:0)
应该是
FriendNames = new List<string>();
或者
FriendNames = new List<string>(123456);
如果您在初始化之前知道容量。
答案 2 :(得分:0)
你可以这样做。
private List<string> list = new List<string>();
public List<string> List
{
get { return list; }
set { list = value; }
}
答案 3 :(得分:0)
实例化列表应该类似于
FriendNames = new List<string>();
如果您询问是否需要this
,如果您的构造函数采用FriendNames
列表,使您的意思含糊不清,那么您必须使用{{1}表示你想将它分配给对象的实例。
this
答案 4 :(得分:0)
如果你正在使用this.FriendNames = new List<string>;
,你会发现这是第一眼的类变量。
特别是在具有许多变量的大型类中,这可能是一个优势,因为您可以更容易/更快地将类变量与局部变量区分开来。
但正如其他许多人所说,这取决于您的偏好。
如果你有一个类和一个具有相同名称的局部变量,那么重要的是:
MyClass
{
public List<string> FriendNames {get;set;}
public SetMyList(List<string> FriendNames)
{
this.FriendNames = FriendNames;
}
}
在这种情况下,您必须使用this-keyword
。
答案 5 :(得分:0)
此处this.FriendNames = new List<string>;
与FriendNames = new List<string>;
this
完全相同,只有在您的名称与您的媒体资源相同的变量时才会计算。
喜欢这里:
public MyClass(List<string> FriendNames)
{
this.FriendNames = FriendNames; // here we have to specify which FriendNames is from this class
}
构造函数用于初始化一些资源,因此初始化列表是个好主意。
您可以使用name和id创建构造函数(如果您总是分配它们)
public MyClass(string name, int id)
{
FriendNames = new List<string>();
Name = name;
Id = id;
}
并将您的代码更改为:
MyClass oMyClass = new MyClass("Bob Smith", 1);
oMyClass.FriendNames.Add("Joe King");
答案 6 :(得分:0)
使用它来初始化类的实例
var x = new MyClass { Id = 1, Name = "Steve",
FriendNames = { "John", "Paul", "Ringo", "George" } };
通常不会使用&#34;这个。&#34;引用,我很少看到它以这种方式使用(通常我使用我的代码中留下的任何匈牙利符号的唯一残余,通过在私有字段前加上&#34; _&#34;至少
public void DoSomething();
{
_myInt = 123;
}
private int _myInt;
public int MyInt { get { return _myInt; } }
意味着我知道最新情况,但我确信那里的人不会喜欢&#34; _&#34;。