浅谈New关键字
new關(guān)鍵字在我們的程序中可謂是無時(shí)不刻在用到,那么new關(guān)鍵字都可以用在哪些地方呢?考慮以下幾個(gè)問題:
1、new一個(gè)class對(duì)象和new一個(gè)struct或者new一個(gè)enum有什么不同?
答:new一個(gè)class時(shí),new完成2個(gè)內(nèi)容:一是調(diào)用newobj命令為實(shí)例在托管堆中分配內(nèi)存,二是調(diào)用構(gòu)造函數(shù)實(shí)現(xiàn)對(duì)象初始化。
new一個(gè)struct時(shí),new運(yùn)算符用于調(diào)用其構(gòu)造函數(shù),完成實(shí)例的初始化。
2、new在.NET中除了創(chuàng)建對(duì)象實(shí)例外,還可以做什么?
答:new關(guān)鍵字:作為運(yùn)算符可以創(chuàng)建對(duì)象和調(diào)用構(gòu)造函數(shù);
作為修飾符可以用于向基類成員隱藏繼承成員,實(shí)現(xiàn)派生類中隱藏基類的virtual方法,不能和override共存;
作為約束可以在泛型聲明中約束可能用作類型參數(shù)的參數(shù)類型,即new約束指定泛型類聲明中的任何類型參數(shù)都必須要有公共的無參構(gòu)造函數(shù);
使用new關(guān)鍵字實(shí)現(xiàn)多態(tài)。
3、new運(yùn)算符可以重載嗎?
答:new運(yùn)算符不可以重載。
4、泛型中new關(guān)鍵字的作用?
答:new運(yùn)算符用于返回一個(gè)引用,指向系統(tǒng)分配的托管堆的內(nèi)存地址,new分配內(nèi)存失敗,將引發(fā)OutOfMemoryException異常。
5、new一個(gè)繼承下來的方法和override有什么區(qū)別?
答:new是隱藏基類方法,override是覆寫基類方法。如果要訪問new隱藏了的基類成員需要使用base關(guān)鍵字實(shí)現(xiàn)。
6、int i和int i = new int()有什么不同?
答:new一個(gè)int時(shí),new運(yùn)算符用于初始化其值為0,使構(gòu)造函數(shù)完成更優(yōu)越的初始化操作。
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/PaulMa/archive/2010/10/28/1863642.html
總結(jié)
- 上一篇: 建设一亩地的温室大棚需要多少钱?
- 下一篇: 在JS中最常看到切最容易迷惑的语法(转)