昨天我在.Net框架中发现了一个bug,并且发现这是一个已知的bug,不会被修复。简而言之,该错误在于,当将 int (以及可能的其他二进制类型)分配给该字段时,包含 IComparable 类型字段的类无法进行二进制序列化和反序列化:
[Serializable]
public class Foo
{
public IComparable Value;
}
如果您尝试序列化(和反序列化)以下两个对象,第一个对象将成功,第二个对象将失败:
var s = new Foo { Value = "foo" };
var i = new Foo { Value = 1 };
我在这里更详细地描述这一点:http://ondevelopment.blogspot.com/2009/11/fix-that-bug-will-ya-no.html http://ondevelopment.blogspot.com/2009/11/fix-that-bug-will-ya-no.html
您可以在此处找到错误报告(请注意,该报告来自 2006 年,并非由我提交):http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=91177 http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=91177
这个问题不会被修复,因为“修复的风险超过了它的好处”。我没有看到任何(可行的)场景,这将是一个突破性的改变。所以我真正的问题是,有人能想到一个真正的场景,这将是一个突破性的改变吗?
我敢打赌,他们对本机类型(例如用于序列化的 int 甚至系统的其他部分)进行了一些非常人为的优化。
撤消这一操作可能存在风险,因为它可能会导致正确性或性能下降,或两者兼而有之。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)