Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding null to a List<bool?> cast as an IList throwing an exception

Tags:

c#

.net

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]");
like image 314
ckknight Avatar asked Dec 16 '09 00:12

ckknight


1 Answers

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.

like image 118
itowlson Avatar answered Sep 28 '22 18:09

itowlson