Использование .NET 3.5 и С# 3.0,
IList list = new List<bool?>();
list.Add(null);
Это вызывает исключение ArgumentException, которое просто кажется неправильным.
List<bool?> list = new List<bool?>();
list.Add(null);
Работает отлично.
Является ли это ошибкой в коде Microsoft?
Пример того, как произвести такую ошибку в реальной ситуации:
new JavaScriptSerializer().Deserialize<List<bool?>>("[true, false, null]");