gpt4 book ai didi

c# - 在其基类列表中查找派生类

转载 作者:行者123 更新时间:2023-11-30 15:23:12 24 4
gpt4 key购买 nike

所以我有一个 BaseClass 列表,我用派生类的几个实例(每个派生类只有一个)填充它,这样我们就有了类似的东西:

List<BaseClass> myList = new List<BaseClass>();

myList.Add(new DerivedClassA());
myList.Add(new DerivedClassB());
myList.Add(new DerivedClassC());

现在我希望能够用这样的东西搜索 myList:

public void FindClass (BaseClass class){ //class is a derived class
//find index or object of type class
//so that if class is a DerivedClassB
//we return the first DerivedClassB in myList
}

这可能吗?我知道我可以给每个 DerivedClass 一个名称属性并通过它的名称找到它,但我不想这样做。

最佳答案

另一种解决方案是使用“OfType<>”来过滤列表

public class Base { }

public class DerivedA : Base { }
public class DerivedB : Base { }

List<Base> instances = new List<Base>();
instances.Add(new DerivedA());
instances.Add(new DerivedB());

var results = instances.OfType<DerivedA>().FirstOrDefault();

编辑 - 这是一种创建执行搜索的方法的方法

T Find<T>() where T : Base {
return _Instances.OfType<T>().FirstOrDefault();
}

关于c# - 在其基类列表中查找派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34716314/

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