gpt4 book ai didi

c# - 使用泛型参数创建方法

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

这段代码是我写的(只有第一行很重要):

public void InsertIntoBaseElemList(ref List<XElem> List, XElem Element)
{
for (int index = 0; index < List.Count; index++) {
if (List[index].Position < Element.Position && index + 1 == List.Count) {
List.Add(Element);
} else if (List[index].Position > Element.Position) {
List.Insert(index, Element);
}
}
}

此方法主要是将 XElem 类型的元素插入到 XElem 类型的列表中。
(两个参数必须具有相同的类型。在本例中为 XElem)

我有多个这样的列表,但它们的类型不同。
为了允许将 YElem 类型的元素插入到 YElem 类型的列表中,我必须复制此方法并更改参数类型。

是否可以编写一个可以处理多种类型的方法作为参数,保证参数 1 和参数 2 的类型相同?

我阅读了有关泛型类型的内容,但我无法让它发挥作用。

最佳答案

假设类型实现相同的接口(interface)或基类型,您可以执行以下操作:

public void InsertIntoBaseElemList<TElem>(ref List<TElem> List, TElem Element) where TElem : IElem {
for (int index = 0; index < List.Count; index++) {
if (List[index].Position < Element.Position && index + 1 == List.Count) {
List.Add(Element);
} else if (List[index].Position > Element.Position) {
List.Insert(index, Element);
}
}
}

where 子句限制可以指定为参数的类型,并允许您在方法中访问该类型的属性和方法。

关于c# - 使用泛型参数创建方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27781875/

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