相关疑难解决方法(0)

C#generics约束传播

这个例子是对真正问题的简化,但我怎样才能编译它呢?我希望泛型约束能够传播.

由于T是TClass而TClass是一个类,为什么不是T类?

public class MyClass<TClass> where TClass : class 
{
    public void FuncA<Ta>() where Ta : class
    {
    }

    public void FuncB<Tb>() where Tb : TClass
    {
    }

    public void Func<T>()
        where T : TClass
    {
        FuncA<T>();
        FuncB<T>();
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:

这实际上有效.Eric Lippert让我思考,谢谢.

由于T是TClass而TClass是TAnotherType,因此T实际上是TAnotherType.

public class MyClass<TClass, TAnotherType> where TClass : TAnotherType
{
    public void FuncA<Ta>() where Ta : TClass
    {
    }

    public void FuncB<Tb>() where Tb : TAnotherType
    {
    }

    public void Func<T>()
        where T : TClass
    { …
Run Code Online (Sandbox Code Playgroud)

c# generics

5
推荐指数
3
解决办法
553
查看次数

标签 统计

c# ×1

generics ×1