gpt4 book ai didi

.net - 逻辑及其在 Collections.Generic 和继承中的应用

转载 作者:行者123 更新时间:2023-12-01 07:06:17 28 4
gpt4 key购买 nike

一切都继承自对象。这是传承的基础。一切都可以隐式地抛出继承树,即。

object me = new Person();

因此,根据其逻辑结论,一组人也将是一组对象:
List<Person> people = new List<Person>();
people.Add(me);
people.Add(you);
List<object> things = people; // Ooops.

但是,这行不通,设计 .NET 的人要么忽略了这一点,要么是有原因的,我不确定是哪个。至少有一次我遇到了这样的情况,这本来是有用的,但我最终不得不使用一个讨厌的黑客(子类化 List 只是为了实现一个强制转换运算符)。

问题是:这种行为有原因吗?是否有更简单的解决方案来获得所需的行为?

作为记录,我相信我想要这种行为的情况是一个通用的打印函数,它通过调用 ToString() 并很好地格式化字符串来显示对象列表。

最佳答案

好的,每个在 .net 中使用过泛型的人一定都遇到过这个问题。
是的,直觉上它应该工作。不,在当前版本的 C# 编译器中没有。
Eric Lippert 对这个问题有一个非常好的解释(它分为 11 个部分或其他部分,并且会在某些地方让你心烦意乱,但非常值得一读)。见 here .
编辑:
挖出另一个相关链接,这个链接讨论了 java 如何处理这个问题。见 here

关于.net - 逻辑及其在 Collections.Generic 和继承中的应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/110121/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com