主要是我在项目中看到了这3种写法 不理解 第二种 最好理解 构造方法 创建了 User 的对象user 那么 第一种和第三种 什么情况下可以使用 ? 它的目的是什么呢? 在一个项目中 首先在类下面使用了User user = new User(); 然后在方法里面使用了user = new User(); 如下: public void Initial() { user = new User(); }
那说明这个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 (...) { ... } }
User user; //创建一个指针,但是此时该指针指向一个空值 user = new User(); //在内存栈区创建一个User对象,并将上一步创建的指针指向这块内存的首地址User user = new User(); //创建对象的同时将指针指向它个人更喜欢前面一种方式,需要什么时候创建对象就什么时候创建。但是实际上两种方式区别不大。
第三种,如果不加上第一行,会出现user没有定义的错误。
简单说1+3等价2。
不理解
第二种 最好理解 构造方法 创建了 User 的对象user
那么 第一种和第三种 什么情况下可以使用 ? 它的目的是什么呢?
在一个项目中 首先在类下面使用了User user = new User(); 然后在方法里面使用了user = new User();
如下:
public void Initial()
{
user = new 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 (...)
{
...
}
}
user = new User(); //在内存栈区创建一个User对象,并将上一步创建的指针指向这块内存的首地址User user = new User(); //创建对象的同时将指针指向它个人更喜欢前面一种方式,需要什么时候创建对象就什么时候创建。但是实际上两种方式区别不大。