gpt4 book ai didi

c# - 在 C# 中检查集合内部的类型

转载 作者:行者123 更新时间:2023-11-30 19:44:52 25 4
gpt4 key购买 nike

我是 C# 的新手,不确定以下内容:我有一个参数定义如下:

public Collection<object> InputObject
{
get { return inputObject; }
set { inputObject= value; }
}
private Collection<object> inputObject;

如您所见,该对象是对象的集合,因为我需要不同的类型。

稍后我想检查类型时,正确的方法是什么?我试过这个:

if (inputObject is Collection<MyDefinedObject>)
{

}

但我收到一 strip 下划线的警告,指出给定的表达式绝不是预期的类型。检查集合中类型的正确方法是什么?

谢谢

最佳答案

您有一个 Object 集合

当你写作时

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;

这意味着您将 collection inputObject 的类型定义为 Collection<object>

如果我希望集合中的所有内容都是 MyDefinedObject 怎么办?

根据您在问题下方的评论,这才是您真正想要的...

private Collection<MyDefinedObject> inputObject;

您收到的错误消息

but I get an underlined warning that the given expression is never of the expected type

那是因为inputObject的类型是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);

关于c# - 在 C# 中检查集合内部的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11656895/

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