Это может быть глупый вопрос, но существует ли обычная практика для инициализации свойств коллекции для пользователя, поэтому им не нужно создавать новую конкретную коллекцию перед использованием это в классе?Инициализация коллекции, поэтому пользователю не нужно
Являются ли они предпочтительными по сравнению с другими?
Вариант 1:
public class StringHolderNotInitialized
{
// Force user to assign an object to MyStrings before using
public IList<string> MyStrings { get; set; }
}
Вариант 2:
public class StringHolderInitializedRightAway
{
// Initialize a default concrete object at construction
private IList<string> myStrings = new List<string>();
public IList<string> MyStrings
{
get { return myStrings; }
set { myStrings = value; }
}
}
Вариант 3:
public class StringHolderLazyInitialized
{
private IList<string> myStrings = null;
public IList<string> MyStrings
{
// If user hasn't set a collection, create one now
// (forces a null check each time, but doesn't create object if it's never used)
get
{
if (myStrings == null)
{
myStrings = new List<string>();
}
return myStrings;
}
set
{
myStrings = value;
}
}
}
Вариант 4:
Любые другие хорошие варианты для этого?
Хорошо, я не думал о возможности неизвестных реализаций IList. –
Кроме того, в рамочной книге упоминается, что вы действительно не должны раскрывать типы IList или List , но вместо этого используйте массив и используйте список внутри. –
В какой каркасной книге вы ссылаетесь? Это звучит как что-то, что я должен прочитать! –