MyClass mc只这么写的话,只声明了一个mc对象,并没有赋值,也就是说mc此时为值为null,new MyClass(),就用了MyClass的默认的构适函数创建了MyClass对象赋值给MyClass,此时mc不为null,为MyClass对象。在C#中要用类对象是必须要new的。在C++中分配了内存要手动释放,在C#不需要,它会自动释放的
(1)new 运算符 用于创建对象和调用构造函数。
(2)new 修饰符 用于隐藏基类成员的继承成员。
(3)new 约束 用于在泛型声明中约束可能用作类型参数的参数的类型。
new 运算符
1.用于创建对象和调用构造函数
例:Class_Test MyClass = new Class_Test();
2.也用于为值类型调用默认的构造函数
例:int myInt = new int();
myInt 初始化为 0,它是 int 类型的默认值。该语句的效果等同于:int myInt = 0;
3.不能重载 new 运算符。
4.如果 new 运算符分配内存失败,则它将引发 OutOfMemoryException 异常。
new 修饰符
使用 new 修饰符显式隐藏从基类继承的成员。若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并用 new 修饰符修饰它。
第一点:对于非静态的,那么需要new一下,叫实例化,这样才会分配内存空间.
第二点:在C#中有垃圾回收机制,不需要考虑释放内存问题
因此说C++是开手动档的车,而C#是自动档的~~
new 只是将他实例化,C# 里面只有少数情况才需要手动释放。
本人没学过C++。。。C#中如果只是MyClass mc,则mc的默认值是null。显示调用它的构造函数才会在堆里分配内存,并把指针放到栈上赋给变量mc。C#是托管类型的语言,当这个new了的对象没有被引用是,CLR会自动进行垃圾回收....