gpt4 book ai didi

c# - 在属性中初始化列表还是在构造函数中初始化列表?

转载 作者:太空狗 更新时间:2023-10-29 21:12:26 24 4
gpt4 key购买 nike

我有一个 List<> 的对象由属性暴露。我通常在属性 getter 中初始化我的列表,如下所示:

public class Foo
{
private List<bar> _barList;

public List<bar>
{
get
{
if(_barList == null)
{
_barList = new List<Bar>()
}

return _barList;
}

set
{
_barList = value;
}
}

public Foo()
{
}
}

但是,我的同事们通常更喜欢在类构造函数中初始化列表,如下所示:

public class Foo
{
public List<bar> BarList { get; set; }

public Foo()
{
BarList = new List<Bar>();
}
}

这两种情况都阻止了 BarList在初始化之前被访问。由于使用了自动属性,第二个看起来更简洁。不过,第一个似乎是更好的选择,因为列表仅在首次使用时才被初始化。还有其他我应该考虑的因素吗?有这方面的最佳实践吗?

最佳答案

除了usrs answer之外,还有一个关于这个问题的答案,使用C# 6.0。

其中一个新功能是自动实现属性的初始值设定项。你会写:

public class Foo
{
public List<bar> BarList { get; set; } = new List<bar>();
}

此外,查看新的主构造函数,发现 a programmers.stackexchange article .

此初始化程序将在对象初始化时调用。在内存消耗/性能方面,它应该等于在构造函数中初始化属性。

关于c# - 在属性中初始化列表还是在构造函数中初始化列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31513281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com