Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
525 views
in Technique[技术] by (71.8m points)

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

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]");
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...