. . , .
private string _someField;
public string SomeField
{
get
{
if (_someField == null)
{
_someField = new String('-', 1000000);
}
return _someField;
}
}
Lazy load - , , , , , , :
public class SomeClass
{
private string _someField;
private readonly object _lazyLock = new object();
public string SomeField
{
get
{
if (_someField == null)
{
lock (_lazyLock)
{
if (_someField == null)
{
_someField = new String('-', 1000000);
}
}
}
return _someField;
}
}
}
, .NET 4.0 Lazy<T>, - .
public class SomeClass
{
private readonly Lazy<string> _someField = new Lazy<string>(() => new string('-', 10000000), true);
private readonly object _lazyLock = new object();
public string SomeField
{
get
{
return _someField.Value;
}
}
}
, - , ( ), , . , , .