本人才刚开始学习C#(只学了3天),现正在看接口相关知识,有些疑惑希望高手指点。
接口是不是就好比C++里面的虚基类,在网上看到的一些实例里面好多对接口的实例化(接口是不能实例化的),是不是其实都是对使用接口的类的引用,通过多态性实现的?还有就是类阿,数组什么的都是引用,好比C++里面的指针,只是指向该对象而以,对象改变或者引用改变都会改变对象?(静态的不算)望高手指点。。本人有点C++基础,对C#还比较陌生,现正在看《C#入门经典》

解决方案 »

  1.   

    接口主要是为了实现像C++中的多重继承的功能。
    接口,如其名:我需要某个功能,某个类有吗?若有,给我接口。C#均按值传递(官方说的),若要实现按引用传递(如C++中的指针,其实应该说C++中的引用),要在变量前面加上 ref 或 out。
      

  2.   

    abstract class 可能是LZ想说得? 即可实现方法, 也可作为Base Class. 
    pure abstract和接口(interface)没有多大的差别, 不过很多时候如果是pure abstract的时候, 就用interface了。在C#里, 不像C++可以进行多个class继承, 但是可以多个interface继承。 
    public class A{}
    public class B{}
    public interface IE{}
    public interface ID{}
    public interface IC{}public class MyClass:A,B{} //在C#里, 是错误的.public class MyClass:A,IE,IC,ID{} //是可以的.
      

  3.   

    你可以用 接口名 实力名=new 接口();
                  实力名.下的方法;
    呵呵~瞎蒙滴!
    --------------------------------------------------------------------
    ╔☆→——————— ∮ —╗ 
    ┊有没有那麽一首歌 ∮ ∮ ┊ ● /○ 
    ┊оО○会让伱心里记著我?┊/█∨█ 
    ╚☆→————————←☆╝ ∏ ∏ 
      

  4.   

    C++中的指针也是有值传和引用之分的
    void Func(int *para)//值传
    void Func(int *&para)//引用,可以在函数体中改变para的值
    这两个还是不样的C#中
    void Func(int para)//规定就是值传,因为int是值类型
    void Func(object para)//规定就是引用,object是引用类型
      

  5.   


    Object o = new Object();
    其中,new Object()产生了一个对象,而o是对这个对象的引用。(也可以把它理解成一个指针)
    对o的操作,就是对其引用的对象的操作。
    传递o,或者把o的值赋给其他引用,都引用了同一个对象。
      

  6.   

    楼主不是学了C++么?
    在C语言里面,接口是包含方法指针的结构体(方法表)
    在C++里面,接口就是抽象类(vTable)
    在.NET里面,还是同样的东西,只不过加了编译器支持,并且进行了包装而已
    至于它们能不能实例化,那属于编译器控制的范畴。.NET里面分为值类型和引用类型,值类型(struct)就类似于C++中的对象,而引用类型(class)就类似于C++中的对象指针。说明白就是,如果一个变量表示的是struct,那它就是值类型,表示实实在在的struct,如果一个变量表示的是class,那它就是引用类型,表示某个对象的地址(指针)。.NET中所有class对应的实例都是new出来的,全部存在于堆之中,因此也没有了拷贝构造函数等概念。楼主说的,基本都正确,懂C++,搞这个易如反掌。只是在面向对象方面有很多好用的东西,而在C++中向来要自己实现。