List <string> </string>的类构造函数

时间:2013-11-13 17:27:17

标签: c# class constructor initialization

我有以下课程

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

7 个答案:

答案 0 :(得分:0)

没有真正的区别。所以归结为偏好。

有些人喜欢,因为它非常明确并且自我评论。其他人则觉得它使代码混乱。

重要的是你要在构造函数中实例化List。太多人忘了做的事情。

此SO问题中接受的答案有一个很好的列表,列出何时使用this关键字

When do you use the “this” keyword?

答案 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;。