当你想在你的代码中找到一个错误时,这很难;当你认为你的代码是不会有错误时,这就更难了。

C 4.0-向C 4.0集合添加不同的对象类型

admin 94℃
我有一个函数,它根据传递给这个函数的参数返回不同类型的对象。 是否可以基于C 4.0中的某个标识符将这些不同的对象类型添加到集合中? 通常我们会这样做 列表或列表 但我想要一个可以添加任何类型对象的集合。

而不是仅仅做一个 List<object> 像其他海报推荐的那样,您可能需要定义一个接口例如 IListableObject 它包含一些对象需要实现的方法。这将使使用这些对象的任何代码更易于编写,并防止不需要的对象进入集合。

是的,它叫 object 是的。例如:

var objlist = new List<object>();
objlist.Add(1);
objlist.Add(true);
objlist.Add("hello");

你可以用 object[]List<object>ArrayListIEnumerable,…但如果这些类型有一个公共的基类型,则最好坚持使用强类型集合。

实际上,你的收藏应该尽可能具体。当你说

不同类型的对象

这些东西有什么共同点吗?它们实现一个公共接口吗?
如果是这样的话,你可以在界面上专门列出 List<IMyInterface>

否则 List<object> 做你想做的事。

更新

不,不是真的。

很抱歉,我要质疑你的设计。
如果有不同对象的集合,如何决定如何使用其中一个对象?
您将有一个大型switch语句来打开对象的类型,然后转换到一个特定的对象并使用它。

您的工厂方法中也有类似的switch语句来创建对象。

对象定向的一个好处是,如果您正确地设计了对象,那么您就不需要做这么大的'如果是这个对象,那么就做这个.method(),如果是那个对象,那么就做那个.othermethod()'。

我能问一下,你为什么要把不同的东西放在同一个收藏品里?对你有什么好处?

转载请注明:我的代码 » C 4.0-向C 4.0集合添加不同的对象类型