gpt4 book ai didi

C# 中的 Java 有界通配符

转载 作者:行者123 更新时间:2023-12-02 03:13:52 24 4
gpt4 key购买 nike

我被这个问题困扰了几个小时。我正在尝试寻找 C# 的等效方法。

Java,有效:

public class Main
{
public static void main(String[] args)
{
ArrayList<BaseList<? extends Base>> list = new ArrayList<>();
list.add(new DerivedList());
}
}

public class BaseList<T extends Base>
{

}

public class Base
{

}

public class DerivedList extends BaseList<Derived>
{

}

public class Derived extends Base
{

}

我需要 ArrayList<BaseList<? extends Base>> 的等效方法在 C# 中。我希望有人帮助我。

在 C# 中是否可以对变量使用通配符?

最佳答案

您无法完全按照您所描述的那样执行此操作,但有一些解决方法。另一个答案中提到了一个,另一个是使用接口(interface)代替:

public class Main
{
public static void main(String[] args)
{
var list = new List<IBaseList<Base>>();
list.Add(new DerivedList());
}
}
// note "out" here
public interface IBaseList<out T> where T : Base {

}

public class BaseList<T> : IBaseList<T> where T : Base {

}

public class Base {

}

public class DerivedList : IBaseList<Derived> {

}

public class Derived : Base {

}

关于C# 中的 Java 有界通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40628530/

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