C#中new的作用
我以前一直用C++,最近才学C#。我知道new可以分配内存和调用构造函数,但是像是MyClassmc=newMyClass();和MyClassmc;有什么区别?在C++...
我以前一直用C++,最近才学C#。我知道new可以分配内存和调用构造函数,但是像是MyClass mc=new MyClass();和MyClass mc;有什么区别?在C++中,只要声明了类的一个对象就会自动调用构造函数(如:MyClass mc),那C#中则非用new不可吗?再者C++中new分配了内存要delete释放,而C#不需要释放吗?
如果声明后直接用一个已存在的对象赋值呢?(如:MyClass mc2=mc1) 展开
如果声明后直接用一个已存在的对象赋值呢?(如:MyClass mc2=mc1) 展开
8个回答
展开全部
(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 修饰符修饰它。
(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#是自动档的~~
第二点:在C#中有垃圾回收机制,不需要考虑释放内存问题
因此说C++是开手动档的车,而C#是自动档的~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
new 只是将他实例化,C# 里面只有少数情况才需要手动释放。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
本人没学过C++。。。C#中如果只是MyClass mc,则mc的默认值是null。显示调用它的构造函数才会在堆里分配内存,并把指针放到栈上赋给变量mc。C#是托管类型的语言,当这个new了的对象没有被引用是,CLR会自动进行垃圾回收....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询