将List添加到List <bool?>作为IList抛出异常

ckk*_*ght 12 .net c#

使用.NET 3.5和C#3.0,

IList list = new List<bool?>();
list.Add(null);
Run Code Online (Sandbox Code Playgroud)

抛出一个ArgumentException,只是感觉不对.

List<bool?> list = new List<bool?>();
list.Add(null);
Run Code Online (Sandbox Code Playgroud)

完美的工作.

这是微软代码中的错误吗?

在现实生活中如何产生这种错误的一个例子:

new JavaScriptSerializer().Deserialize<List<bool?>>("[true, false, null]");
Run Code Online (Sandbox Code Playgroud)

ito*_*son 14

是的.有关其他报告,请参阅http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/abc99fb5-e218-4efa-8969-3d96f6021cee/.基本上当你List<bool?>通过它的弱类型IList实现访问它时,它会在尝试将项添加到内部存储之前进行一些类型检查 - 并且它会为可空类型检查此类型是否错误.

  • 答案是"是的,这实际上是一个错误"一次而不是"不,你搞砸了......"品尝这一刻......:D (9认同)