首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C# - 泛型和继承的问题

C# - 泛型和继承的问题
EN

Stack Overflow用户
提问于 2018-05-28 01:15:01
回答 2查看 0关注 0票数 0

我遇到了继承和泛型的问题。这是说明我的问题的代码:

代码语言:javascript
复制
namespace TestApplication
{
    public class MyClass<T>
    {
        private T field;

        public MyClass(T field)
        {
            this.field = field;
        }
    }

    public class MyIntClass : MyClass<int>
    {
        public MyIntClass(int field)
            : base(field)
        {
        }
    }
}

当我尝试做这样的事情时:

代码语言:javascript
复制
MyClass<int> sth = new MyClass<int>(10);
MyIntClass intsth = (MyIntClass) sth;

我收到转换异常: Invalid cast exception. Unable to cast 'TestApplication.MyClass`1[System.Int32]' to 'TestApplication.MyIntClass'.

还有什么我不能创建操作符:

代码语言:javascript
复制
public static implicit operator MyIntClass(MyClass<int> myClass)

因为:'TestApplication.MyIntClass.implicit operator TestApplication.MyIntClass(TestApplication.MyClass)': user-defined conversions to or from a base class are not allowed

EN

回答 2

Stack Overflow用户

发布于 2018-05-28 10:13:08

代码语言:javascript
复制
MyClass<int> foo = new MyIntClass();
MyIntClass bar = (MyIntClass)foo; // this works.

Assume:

代码语言:javascript
复制
class Base {
   int x;
}

class Derived : Base {
   int y;
}

Base foo = new Base();
Derived bar = (Derived)foo;
票数 0
EN

Stack Overflow用户

发布于 2018-05-28 11:12:07

代码语言:javascript
复制
using System;

class Base {}
class Child : Base {}

class Test
{
    static void Main()
    {
        Base b = new Base();

        // This will throw an exception
        Child c = (Child) b; 
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000084

复制
相关文章

相似问题

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