У меня нет предупреждений с «Уровень предупреждения», установленным на «низкий» в опциях CC.При значении 'high' я получил предупреждение.
Я пробовал System.Collections.ObjectModel.Collection<T>
и System.Collections.Generic.List<T>
, и оба выдают одинаковые предупреждения.
Я пробовал оба конструктора иобычные вызовы методов - без разницы.
Я пробовал
public MyObj() : this(new List<Object>()) { }
и
public MyObj() : this(new List<Object>{1}) { }
и опять без разницы.
Извлечение переменнойкогда обычный вызов метода тоже не помогает.
Даже Assume
не помог:
public void M1()
{
var list = new List<Object>
{
1
};
Contract.Assume(Contract.ForAll(list, t => t != null));
this.X(list); // Still gives warning on the ForAll requirement
}
public void X(ICollection<object> c)
{
Contract.Requires<ArgumentNullException>(c != null);
Contract.Requires<ArgumentException>(Contract.ForAll(c, x => x != null));
}
(я использую тот же CC: 1.4.40602.0 на VS2010SP1)
ОБНОВЛЕНИЕ
Работал с массивом.
Может быть, Иуда Химанго прав насчет отсутствия контрактов на Collection
и List
.