自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

概述C# New運(yùn)算符

開(kāi)發(fā) 后端
本文介紹C# New運(yùn)算符,包括用于創(chuàng)建對(duì)象和調(diào)用構(gòu)造函數(shù)、也用于為值類(lèi)型調(diào)用默認(rèn)的構(gòu)造函數(shù)和如果C# New運(yùn)算符分配內(nèi)存失敗,則它將引發(fā) OutOfMemoryException 異常等。

前段時(shí)間一個(gè)朋友問(wèn)到C#的New關(guān)鍵字有幾種用法,雖說(shuō)在日常編程中經(jīng)常用到這個(gè)小家伙,但它到底有幾種用法還真沒(méi)有留意過(guò),現(xiàn)將從網(wǎng)上總結(jié)出的資料記下以供同仁學(xué)習(xí)。
(1)C# New運(yùn)算符 用于創(chuàng)建對(duì)象和調(diào)用構(gòu)造函數(shù)。
(2)New 修飾符 用于隱藏基類(lèi)成員的繼承成員。
(3)New 約束 用于在泛型聲明中約束可能用作類(lèi)型參數(shù)的參數(shù)的類(lèi)型。

C# New運(yùn)算符

1.用于創(chuàng)建對(duì)象和調(diào)用構(gòu)造函數(shù)

例:Class_Test MyClass = New Class_Test();

2.也用于為值類(lèi)型調(diào)用默認(rèn)的構(gòu)造函數(shù)

例:int myInt = New int();

myInt 初始化為 0,它是 int 類(lèi)型的默認(rèn)值。該語(yǔ)句的效果等同于:int myInt = 0;

3.不能重載C# New運(yùn)算符。

4.如果C# New運(yùn)算符分配內(nèi)存失敗,則它將引發(fā) OutOfMemoryException 異常。

New 修飾符

使用 New 修飾符顯式隱藏從基類(lèi)繼承的成員。若要隱藏繼承的成員,請(qǐng)使用相同名稱(chēng)在派生類(lèi)中聲明該成員,并用 New 修飾符修飾它。

請(qǐng)看下面的類(lèi):

  1. public class MyClass  
  2. {  
  3. public int x;  
  4. public void Invoke() {}  

在派生類(lèi)中用 Invoke 名稱(chēng)聲明成員會(huì)隱藏基類(lèi)中的 Invoke 方法,即:

  1. public class MyDerivedC : MyClass  
  2. {  
  3. new public void Invoke() {}  

但是,因?yàn)樽侄?x 不是通過(guò)類(lèi)似名隱藏的,所以不會(huì)影響該字段。

通過(guò)繼承隱藏名稱(chēng)采用下列形式之一:
1.引入類(lèi)或結(jié)構(gòu)中的常數(shù)、指定、屬性或類(lèi)型隱藏具有相同名稱(chēng)的所有基類(lèi)成員。
2.引入類(lèi)或結(jié)構(gòu)中的方法隱藏基類(lèi)中具有相同名稱(chēng)的屬性、字段和類(lèi)型。同時(shí)也隱藏具有相同簽名的所有基類(lèi)方法。
3.引入類(lèi)或結(jié)構(gòu)中的索引器將隱藏具有相同名稱(chēng)的所有基類(lèi)索引器。
4.在同一成員上同時(shí)使用 New 和 override 是錯(cuò)誤的。

注意:在不隱藏繼承成員的聲明中使用 New 修飾符將生成警告。

示例

在該例中,嵌套類(lèi) MyClass 隱藏了基類(lèi)中具有相同名稱(chēng)的類(lèi)。該例不僅說(shuō)明了如何使用完全限定名訪問(wèn)隱藏類(lèi)成員,同時(shí)也說(shuō)明了如何使用New修飾符消除警告消息。

  1. using System;  
  2. public class MyBaseC{  
  3. public class MyClass{  
  4. public int x = 200;  
  5. public int y;  
  6. }  
  7. }  
  8. public class MyDerivedC : MyBaseC{  
  9. new public class MyClass // nested type hiding the base type members{  
  10. public int x = 100;  
  11. public int y;  
  12. public int z;  
  13. }  
  14. public static void Main(){  
  15. // Creating object from the overlapping class:  
  16. MyClass S1 = new MyClass();  
  17. // Creating object from the hidden class:  
  18. MyBaseC.MyClass S2 = new MyBaseC.MyClass();  
  19. Console.WriteLine(S1.x);  
  20. Console.WriteLine(S2.x);  
  21. }  

【編輯推薦】

  1. C#數(shù)據(jù)庫(kù)查詢(xún)和操作大全
  2. 淺析C#擴(kuò)展方法
  3. C# Singleton的使用及優(yōu)缺點(diǎn)探討
  4. 詳細(xì)分析C#數(shù)據(jù)庫(kù)連接池
  5. C#數(shù)據(jù)庫(kù)備份及還原的實(shí)現(xiàn)代碼
責(zé)任編輯:佚名 來(lái)源: cnblogs
相關(guān)推薦

2009-08-11 15:51:08

C#運(yùn)算符算術(shù)運(yùn)算符

2009-08-12 09:30:10

C#??運(yùn)算符

2009-08-12 15:02:49

C#賦值運(yùn)算符簡(jiǎn)單賦值運(yùn)算符

2009-08-12 15:20:18

C#賦值運(yùn)算符復(fù)合賦值運(yùn)算符

2009-09-01 10:08:57

C#運(yùn)算符

2009-08-12 13:35:22

C#關(guān)系運(yùn)算符

2009-08-12 14:29:32

C#條件運(yùn)算符

2009-08-12 14:49:33

C#移位運(yùn)算符

2009-08-12 10:47:03

C#運(yùn)算符重載

2009-09-04 13:18:10

C#允許運(yùn)算符重載

2009-08-12 10:27:12

C#運(yùn)算符重載運(yùn)算符重載實(shí)例

2009-08-12 10:07:51

C#運(yùn)算符

2009-08-14 10:16:57

C#運(yùn)算符重載

2009-08-12 10:56:47

C#運(yùn)算符重載C#運(yùn)算符重載實(shí)例

2009-08-12 14:23:09

C#邏輯運(yùn)算符

2009-08-12 12:46:11

C#運(yùn)算符重載

2009-08-11 16:03:13

C#運(yùn)算符

2025-02-07 00:12:34

C#編程as

2009-08-12 13:07:13

C#運(yùn)算符優(yōu)先級(jí)

2025-01-24 08:32:00

運(yùn)算符C#
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)