List<T>
не происходит от Collection<T>
- это действительно, однако, реализует ICollection<T>
. Это было бы лучшим выбором типа возврата.
Что касается new List<int>(some collection<int>)
вопрос - это частично зависит от того, каков набор. Если это реализует ICollection<T>
(во время выполнения) затем, конструктор может использовать Count
свойство для создания списка с правильной начальной способностью прежде, чем выполнить итерации через него и добавить каждый объект. Если это не реализует ICollection<T>
затем, это просто эквивалентно:
List<int> list = new List<int>();
foreach (int x in otherCollection)
{
list.Add(x);
}
Все еще хороший иметь в удобном конструкторе, но не чрезвычайно эффективное - это не может быть, действительно.
я не полагаю, что конструктор делает что-либо хитрость для массивов, которые она потенциально могла - использование Array.Copy
или безотносительно просто скопировать партию сразу вместо итерации все же. (Аналогично, если бы это был другой List<T>
, то это могло бы достигнуть вспомогательный массив и копию настолько непосредственно.)
Да, это правильно:
НЕТ ДЕЙСТВИЙ : [...] InnoDB отклоняет операцию удаления или обновления для родительской таблицы.
RESTRICT : отклоняет удаление или обновление операция для родительской таблицы. Указание RESTRICT (или NO ACTION) - это то же самое, что и без ON DELETE или Предложение ON UPDATE. [...]
Очевидно NO ACTION
и RESTRICT
являются синонимами. Кроме того, поскольку они используются всякий раз, когда нет предложения ON DELETE / UPDATE
, это поведение по умолчанию.
SET NULL : удалить или обновить строку из родительской таблицы и установить столбец или столбцы внешнего ключа в дочерняя таблица в NULL. [...]
Внешний столбец установлен в NULL, при условии, что он не объявлен как NOT NULL (или InnoDB не разрешит удаление или обновление).
CASCADE : Удалить или обновить строку из родительская таблица и автоматически удалять или обновлять соответствующие строки в дочерней таблице. [...]
Каскад удаляет (или обновляет) внешний столбец.
УСТАНОВИТЬ ПО УМОЛЧАНИЮ : Это действие распознается парсером, но InnoDB отклоняет определения таблиц, содержащие ON DELETE УСТАНОВИТЬ ПО УМОЛЧАНИЮ или НА ОБНОВЛЕНИИ УСТАНОВИТЬ ПО УМОЛЧАНИЮ пункты.
Таким образом, вы не можете использовать эту опцию.