jac*_*ack 2 c# performance list
我有一个列表,如果尚未实例化,可能为null,我想在调用GetList()时能够返回现有或创建列表然后返回.这看起来更干净:
private List<object> m_objects;
public List<object> GetList()
{
m_objects = m_objects ?? new List<object>();
return m_objects;
}
Run Code Online (Sandbox Code Playgroud)
但是将列表设置为自身会有性能损失,还是C#意识到这不是必需的?
替代方案是:
private List<object> m_objects;
public List<object> GetList()
{
if(m_objects != null)
{
return m_objects;
}
m_objects = new List<object>();
return m_objects;
}
Run Code Online (Sandbox Code Playgroud)
显然不是世界末日,但我仍然很好奇.
用途Lazy<T>:
private Lazy<List<object>> m_objects = new Lazy<List<object>>();
public List<object> GetList()
{
return m_objects.Value;
}
Run Code Online (Sandbox Code Playgroud)
解决性能问题.担心这里的表现是不成熟的优化.您应首先编写代码才能正常工作,然后如果您发现任何与性能相关的问题,请对其进行分析并进行优化.