问题描述
使用.NET 3.5和C#3.0,
IList的列表=新名单,其中; bool的>();
list.Add(空);
这将引发ArgumentException,它只是感觉错了。
名单,其中; bool的>名单=新名单,其中;布尔>();
list.Add(空);
完美的作品。
这是微软的code中的错误,然后呢?
是如何产生这种错误在现实生活中的例子:
新JavaScriptSerializer()反序列化<列表< bool的>>([真,假,空]);
是的,确实如此。请参阅http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/abc99fb5-e218-4efa-8969-3d96f6021cee/对于其他报告。基本上当你访问名单,其中选择BOOL>
通过其弱类型IList实现,它试图将项目添加到内部存储之前的一些类型检查 - 和它得到这种类型的检查错误的空类型。
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.
这篇关于添加空到List&LT;布尔&GT;转换为一个IList抛出一个异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!