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)
展开
 我来答
雨悟极
推荐于2018-02-27 · TA获得超过162个赞
知道小有建树答主
回答量:118
采纳率:0%
帮助的人:133万
展开全部
MyClass mc只这么写的话,只声明了一个mc对象,并没有赋值,也就是说mc此时为值为null,new MyClass(),就用了MyClass的默认的构适函数创建了MyClass对象赋值给MyClass,此时mc不为null,为MyClass对象。在C#中要用类对象是必须要new的。在C++中分配了内存要手动释放,在C#不需要,它会自动释放的
xiangjuan314
2016-01-06 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2871万
展开全部
(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 修饰符修饰它。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友37ffe09e1
2011-11-16 · TA获得超过682个赞
知道小有建树答主
回答量:1119
采纳率:0%
帮助的人:709万
展开全部
第一点:对于非静态的,那么需要new一下,叫实例化,这样才会分配内存空间.
第二点:在C#中有垃圾回收机制,不需要考虑释放内存问题
因此说C++是开手动档的车,而C#是自动档的~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
洋丨葱
2011-11-16
知道答主
回答量:12
采纳率:0%
帮助的人:4.9万
展开全部
new 只是将他实例化,C# 里面只有少数情况才需要手动释放。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Pink__L
2011-11-16
知道答主
回答量:15
采纳率:0%
帮助的人:5万
展开全部
本人没学过C++。。。C#中如果只是MyClass mc,则mc的默认值是null。显示调用它的构造函数才会在堆里分配内存,并把指针放到栈上赋给变量mc。C#是托管类型的语言,当这个new了的对象没有被引用是,CLR会自动进行垃圾回收....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式