首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不能在泛型类型之间进行强制转换

不能在泛型类型之间进行强制转换
EN

Stack Overflow用户
提问于 2011-08-11 23:11:55
回答 2查看 1.2K关注 0票数 2

我正在尝试这样做:

代码语言:javascript
复制
interface IA
{
}

class A : IA
{
}

class Foo<T> where T: IA
{
}

class Program
{
    static void Main( string[] args )
    {
        Foo<A> fooA = new Foo<A>();
        Foo<IA> fooIA = fooA as Foo<IA>;
    }
}

但是,从Foo<A>Foo<IA>的转换不能编译。我记得在List<T>之间进行转换时看到过这样的协方差问题,但我不认为它适用于像这样的简单泛型。

为了让这个角色发挥作用,有什么好的工作要做?我该如何解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2011-08-11 23:15:50

代码语言:javascript
复制
interface IA
    {
    }

    class A : IA
    {
    }

    interface IFoo<T> where T : IA
    {
    }

    class Foo<T> : IFoo<T> where T : IA
    {
    }

    class Program
    {
        static void Main(string[] args)
        {
            IFoo<A> fooA = new Foo<A>();
            Foo<IA> fooIa = fooA as Foo<IA>;
        }
    }
票数 1
EN

Stack Overflow用户

发布于 2012-05-11 12:58:54

很抱歉,这是用java编写的,但是你可以这样做:

代码语言:javascript
复制
interface Alpha
{
}

class Beta implements Alpha
{
}  

class Foo<T>
{
}

class Program
{
    static void main(string[] args)
    {
        Foo<Beta> fooBeta = new Foo<Beta>();
        Foo<? implements Alpha> fooAlpha = fooBeta;
    }
}

这并不能完全解决问题,但你至少可以在不知道Beta的情况下访问所有的Alpha方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7028347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档