Lou*_*hys 58 .net c# generics inheritance extends
在Java中,我可以执行以下操作:(假设Subclass扩展Base):
ArrayList<? extends Base> aList = new ArrayList<Subclass>();
Run Code Online (Sandbox Code Playgroud)
C#.NET中的等价物是什么?? extends显然没有关键字,这不起作用:
List<Base> aList = new List<Subclass>();
Run Code Online (Sandbox Code Playgroud)
Ray*_*orm 94
实际上有一个等价物(有点),where关键字.我不知道它是多么"接近".我有一个功能,我需要做类似的事情.
我找到了一个关于它的msdn页面.
我不知道你是否可以内联一个变量,但是你可以做一个类:
public class MyArray<T> where T: someBaseClass
或者一个函数
public T getArrayList<T>(ArrayList<T> arr) where T: someBaseClass
我没有在页面上看到它,但使用where关键字可能是变量.
研究Covariance并Contravariance介绍.Net 4.0.但它interfaces现在只适用.
IEnumerable<Base> list = new List<SubClass>();
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您正在寻找两种类型的泛型,请看一下:
void putAll<K1, V1>(Dictionary<K1,V1> map) where K1 : K where V1 : V;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43668 次 |
| 最近记录: |