User user;
        User user = new User();
        user = new User();
User表示一个类  上面3种写法区别在哪里呢?

解决方案 »

  1.   

    第一种方法,没有调用构造方法。
    第三种,如果不加上第一行,会出现user没有定义的错误。
    简单说1+3等价2。
      

  2.   

    主要是我在项目中看到了这3种写法 
    不理解
    第二种 最好理解 构造方法 创建了 User 的对象user
    那么 第一种和第三种 什么情况下可以使用 ? 它的目的是什么呢?
    在一个项目中 首先在类下面使用了User user = new User(); 然后在方法里面使用了user = new User();
    如下:       
     public void Initial()
            {
                user = new User();        }
      

  3.   

    那说明这个user是一个成员变量。
    什么时候定义了变量但是不实例化?
    一般来说,有两点,一个是出于性能的考虑,在用到时再实例化,另一个是定义的时候不确定如何实例化它,比如。
    class Area { public virtual void draw() { ... } }
    class Round : Area { public override void draw() { ... }}
    class Rect : Area { ... }
    class Ellipse : Area { ... }Main()
    {
        Area a;
        string type = input("which kind area do you want to draw?");
        if (type == "Round")
        {
            a = new Round();
            a.draw();
        }
        if (...)
        {
           ...
        }
    }
      

  4.   

    c#和c++不同,User user;这句话没有创建实例,相当于c++定义了一个指针,只有new才会创建实例,第二种和第三种写法一样,没有区别,
      

  5.   

    User user; //创建一个指针,但是此时该指针指向一个空值
    user = new User(); //在内存栈区创建一个User对象,并将上一步创建的指针指向这块内存的首地址User user = new User(); //创建对象的同时将指针指向它个人更喜欢前面一种方式,需要什么时候创建对象就什么时候创建。但是实际上两种方式区别不大。