【问题标题】:Class constraints JAVA to C# implemetation类常量 JAVA 到 C# 的实现
【发布时间】:2011-08-02 18:00:38
【问题描述】:

Java 实现:

我有这个抽象类:

public abstract class Base<T> {}

和派生的:

public class MyClass<W extends Base> {}  //Compiles and works just fine

注意:在 JAVA 中,将 Base 声明为约束时,我不需要将泛型类型添加到 Base。

.Net 实现

public class MyClass<W> where W : Base  //Doesn't compile
public class MyClass<W> where W : Base<T> //Doesn't compile - (what is T ?)

我需要能够在不指定泛型类型的情况下将泛型类声明为约束(就像在 JAVA 中一样) 我可以在 .Net 中这样做吗???

【问题讨论】:

  • 如果MyClass&lt;W extends Base&lt;?&gt;&gt;是不是java版本更好

标签: c# java .net c#-4.0


【解决方案1】:

您需要在泛型类型参数列表中包含T

public class MyClass<W, T> where W : Base<T>

用法:

var myObject = new MyClass<ClassExtendingBase, string>();

public abstract class Base<T> { }

public class ClassExtendingBase : Base<string> { }

【讨论】:

  • 怎么用,new MyClass&lt;Derived&lt;String&gt;, String&gt;?
猜你喜欢
  • 2016-09-12
  • 2014-08-12
  • 2010-10-08
  • 2012-02-07
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 2012-08-25
相关资源
最近更新 更多