到目前为止,我将创建一个名为" Names"我们这样:
class Class1
{
private string[] names;
public string[] Names
{
get
{
return names;
}
set
{
names = value;
}
}
Class1()
{
names = new string[] { "Peter", "John" };
}
}
但是最近我看到一些代码这样做了:
class Class1
{
private string[] names;
public string[] Names
{
get
{
// Initialize object here
if (names == null)
names = new string[] { "Peter", "John" };
return names;
}
set
{
names = value;
}
}
Class1()
{
// No initialization here
}
}
所以这些人所做的只是在需要时创建一个实例。对我来说似乎是一个很好的编程习惯,可以节省内存和周期。还有助于保持构造函数整洁。 我试图获取更多信息,偶然发现了懒惰初始化,似乎做了几乎相同的事情。我的问题是,这是一个很好的编程实践吗?是否有一些我没有看到的陷阱或者我是否可以愉快地适应这种做法?
答案 0 :(得分:0)
有一个问题是构造函数是同步的,而getter则没有。所以在多线程的情况下,get可以初始化多个实例。