第一个问题:
Vector()在C#里属于Array Types,Array Types属于Reference Type。
一个Reference Type分为两个部分,一个有名字的句柄,在你的代码里就是x,一个没有名字的对象实例,就是new Vector()。
x本身并不是Vector()的实例,它只是指向一个Vector()的实例罢了。分配空间、创建对象实例和指向过程在这里由new完成。
表达不行,不知道你明白了吗第二个问题:
Shape ss = new 方();方 ss = new 方()都是可以的。

解决方案 »

  1.   

    第一个问题你最好将其看作指针.
    Vector   x=new   Vector();可以分解为三句话:
    1 Vector   x;
    2 new   Vector(); //此时new出来的变量会被存放到一个未命名的指针下
    3 x=未命名指针;//指向未命名的指针所指向的地址此时x便指向了new出来的变量的地址
    第二个问题:
    现在你只有"ss"类和"方"类,自然看不出有什么不一样的.
    但是如果你现在有了一个"我的方"类:
    public   class   我的方   :   Shape 
    此时便可以通过Shape的指针指向"方"或者"我的方"类
    假如在"Shape"类中写了一个
    public void Draw()
    {
        this.draw();
    }
    protected void draw()
    {
        Console.Writeln("Shape");
    }
    那么"方"或者"我的方"将会调用Draw()方法.如果你在"方"或者"我的方"中各实现了draw()方法,那么在调用Draw()的时候,它们将进入各自的draw()方法中,这样便实现了多态.
    "方"类中的draw():
    protected void draw()
    {
        Console.Writeln("方");
    }
    "我的方"类中的draw():
    protected void draw()
    {
        Console.Writeln("我的方");
    }
    在两个类中不必重写Draw()这样,在
    Shape 方1=new 方();
    Shape 我的方1 = new 我的方();
    那么调用方1.Draw();和调用我的方1.Draw();所得的结果分别是"方"和"我的方"