隐式铸造

时间:2016-10-08 10:56:15

标签: c#

我有一个继承自A

的班级B
public class A : B { }
A a = new A();

List<B> list= new List<B> {
    a
}

这给我一个错误,指出a无法隐式转换为B

当我尝试将a投射到B时:

(B) a

Visual Studio说演员是redundant并告诉我将其删除。

有人可以解释一下吗?

Image 1

Image 2

3 个答案:

答案 0 :(得分:2)

如错误所示,代码中的MainMenu不是指您的MainMenu类,而是指System.Windows.Forms.MainMenu,它不会从UserControl继承。

要解决此问题,请使用限定名称空间:

controls["MainMenu"] = new Assignment3.Views.MainMenu();

或者,您可以使用与内置类名不冲突的其他类名。

答案 1 :(得分:1)

从您的屏幕截图中,看起来您正在将System.Windows.Forms.MainMenu课程与您自己的Assignment3.Views.MainMenu混合。

试试这个:

controls["MainMenu"] = new Assignment3.Views.MainMenu();

答案 2 :(得分:0)

尝试这些更改

   public class B
    {
    }
    public class A : B
    {
        A a = new A();

        List<B> b = null;

        public A()
        {
            b = new List<B>() { a };
        }
    }