gpt4 book ai didi

c# - 搜索 List 然后更改为 List

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:25 25 4
gpt4 key购买 nike

我有这段代码,我需要能够搜索 HierarchyItem 的不同列表s 并返回正确类型的列表
Hierarchy h = new Hierarchy();
//add a load of items of HierarchyItemA type;
List<HierarchyItemA> results = h.Search("text");

代码:

public class Hierarchy
{
private List<HierarchyItem> items;

public Hierarchy()
{
items = new List<T>();
}
public void AddItem(HierarchyItem item)
{
items.Add(item);
}
public List<T> Search(string searchText)
{
List<T> results = new List<T>();
foreach (HierarchyItem item in items)
{
if (item.DisplayText().ToLower().Contains(searchText.ToLower()))
{
results.Add(item);
}
}
return results;
}
}
public abstract class HierarchyItem
{
public string DisplayText()
{
//returns a string
}
}
public class HierarchyItemA : HierarchyItem
{
//do whatever
}
public class HierarchyItemB : HierarchyItem
{
//do whatever
}

干杯

编辑:有几个层次结构,每个层次结构中只有一种类型。 Hierarchy.Search(text) 应该返回一个包含正确类型的项目的列表(正确的类型是 A 或 B)

最佳答案

好的,我想我明白你现在想做什么了。感谢您的澄清。

首先,你需要声明类Hierarchy通过替换 public class Hierarchy 作为通用与 public class Hierarchy<T> .我们还将对其施加约束 T必须是 HierarchyItem .

public class Hierarchy<T> where T : HierarchyItem

我们将替换 private List<HierarchyItem> items

private List<T> items;

public void AddItem(HierarchyItem item)

public void AddItem(T item)

最后,行 foreach (HierarchyItem item in items)在方法搜索中应替换为

foreach(T item in items).

因此,我们最终得到

public class Hierarchy<T> where T: HierarchyItem {
List<T> items;

public Hierarchy() {
items = new List<T>();
}
public void AddItem(T item) {
items.Add(item);
}
public List<T> Search(string searchText) {
List<T> results = new List<T>();
foreach (T item in items) {
if (item.DisplayText().ToLower().Contains(searchText.ToLower())) {
results.Add(item);
}
}
return results;
}
}

这应该是您要寻找的。

关于c# - 搜索 List<Items> 然后更改为 List<ItemType : Item>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2049558/

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