Код, который вы демонстрируете, не использует ??оператор (оператор объединения).Вместо этого вы используете троичный оператор.
Попробуйте
return _myTypeList ?? ( _myTypeList = new List<MyType>() );
.
Проверьте это:
static void Main( string[] args )
{
var x = GetList ();
if( _theList == null )
{
Console.WriteLine ("_theList is null");
}
else
{
Console.WriteLine ("_theList has been initialized.");
}
Console.ReadLine ();
}
private static List<int> _theList;
public static List<int> GetList()
{
return _theList ?? ( _theList = new List<int> () );
}
Код вышевыведет '_theList был инициализирован'.
Ваша закомментированная строка:
//return _myTypeList == null ? new List<MyType>() : _myTypeList;
Никогда не будет работать так, как вы ожидаете, поскольку вы не (ленив) не инициализируете _myTypeList где-либо.
_myTypeList == nul
l всегда будет иметь значение true, поскольку _mytypeList никогда не инициализируется, и, таким образом, вы всегда будете возвращать новый экземпляр List.