你有一个对象的集合
当你写
Collection<object>
这意味着您正在定义一个可以包含任何对象的集合。
当你这样做时,你可以做类似的事情
inputObject.Add(new MyDefinedObject());
inputObject.Add(new StringBuilder()));
你最终会在你的收藏中得到不同的类型。
检查收藏的特定元素
如果您想测试该集合中特定对象的类型,您可以这样做
Type t = inputObject[0].GetType();
或者
if (inputObject[0] is MyDefinedObject)
编码
if (inputObject is Collection<MyDefinedObject>)
永远不会是真的,因为你已经定义了
private Collection<object> inputObject;
这意味着您将集合inputObject 的类型定义为Collection<object>
如果我希望集合中的所有内容都是 MyDefinedObject 怎么办?
根据您在问题下方的评论,这就是您真正想要的...
private Collection<MyDefinedObject> inputObject;
您收到的错误消息
但我收到一个带下划线的警告,指出给定的表达式永远不是预期的类型
那是因为 inputObject 是 type Collection<object>
,而绝不是Collection类型。这就像说苹果永远不是香蕉一样。
更好的方法
如果您正在使用泛型并接收泛型集合,为什么不创建一个泛型函数来处理该集合呢?
private void ProcessCollection<T>(Collection<T> inputObject)
{
}
// Somewhere else in your code...
Collection<MyDefinedObject> inputObject = // Initialize this however you do now
ProcessCollection<MyDefinedObject>(inputObject);