本文介绍了添加空到List<布尔>转换为一个IList抛出一个异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用.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抛出一个异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-03 13:40