Using .NET 3.5 and C# 3.0,
IList list = new List<bool?>();
list.Add(null);
This throws an ArgumentException, which just feels wrong.
List<bool?> list = new List<bool?>();
list.Add(null);
Works perfectly.
Is this a bug in Microsoft's code, then?
An example of how to produce this kind of error in a real-life situation:
new JavaScriptSerializer().Deserialize<List<bool?>>("[true, false, null]");
Yes, it is. See http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/abc99fb5-e218-4efa-8969-3d96f6021cee/ for other reports. Basically when you access the List<bool?>
through its weak-typed IList implementation, it does some type checking before trying to add the item to the internal storage -- and it gets this type checking wrong for nullable types.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With