首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#多沿袭实现

2013-08-04 
C#多继承实现比如说TextBox1:System.Windows.Form.TextBox,包括方法tm1()Control1:System.Windows.Form.C

C#多继承实现
比如说TextBox1:System.Windows.Form.TextBox,包括方法tm1();
Control1:System.Windows.Form.Control,包括方法cm1();
现在我要实现TextBox2,自动带有TextBox1.tm1和Control1.cm1()
[解决办法]
public class TextBoxEx:TextBox
{
}
[解决办法]
这个c#不可以实现。只能继承一个类来继承你想要的一个方法,然后另一个方法要自己新建。
[解决办法]
C#不支持多继承。你可以使用扩展方法给一个类附加额外的方法,代替继承。

比如
static class ControlHelper
{
    public static void cm1(this Control c) { }
}

这样所有Control以及Control的派生类都可以使用cm1这个方法了。
[解决办法]

引用:
问题根源在于
从逻辑上讲,TextBox应该是Control1的继承类,
从继承树上讲,TextBox只是Control的继承类,而不是Control1的继承类

再补充一下,要求在.Net2.0中使用多继承解决
哈哈,扩展方法是3.0的特征
[解决办法]
C#不支持多继承.你上面的这两个类,都是普通的类,不是接口,所以不能达到这个功能.
如果是接口的话,比如接口IA,IB,都包含有Show(),即你的类要实现IA,IB的,也是要"显示实现接口"才行.
这是题外话了.
你上面的要求是无法实现,C#可以多继承接口,但是拒绝多继承类.
[解决办法]

public class TextBox2:TextBox
{
    TextBox2 t1;
    Control1 c1;

   //略
   
    public void tm1()
    {
        t1.tm1();
    }
    public void cm1()
    {
       c1.cm1();
    }
}


楼主这样能实现你要求么

热点排行