成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

.NET Framework擴展方法基本常識簡介

開發 后端
.NET Framework擴展方法的類名可以運用任意合法的類名來進行創建。并且必須要和使用擴展方法的代碼存在于同一個命名空間里。

.NET Framework中有很多新奇的東西值得我們去深入的研究。這個世界上總是存在著很多奇妙的東西。然而,在這部分所介紹的擴展方法就是其中之一。從字面上看可能讀者很難猜透.NET Framework擴展方法是什么意思。然而,看了下面的例子,就會感覺到非常的奇妙。#t#

  1. namespace ExtMethod  
  2. {  
  3. public class Class1  
  4. {  
  5. public String s = "bill";  
  6. }  
  7. public class Class2 : Class1  
  8. {  
  9. }  
  10. public static class AnyClassName  
  11. {  
  12. public static String getName
    (this Class1 class1)  
  13. {  
  14. return class1.s + class1.s;   
  15. }  
  16. }  
  17. public partial class Form1 : Form  
  18. {  
  19. private void button1_Click
    (object sender, EventArgs e)  
  20. {  
  21. Class1 c = new Class1();  
  22. MessageBox.Show(c.getName());   
  23. Class2 c = new Class2();  
  24. MessageBox.Show(c.getName());   
  25. }  
  26. }  

 

 

看到上面的代碼,也許很多人會感到奇怪,在Class1和Class2中并沒有getName方法,怎么在調用時出來個getName方法呢?實際上,這就是.NET Framework擴展方法的用法,從本質上說,擴展方法就是將靜態方法(必須聲明成static)插入到某個類和其子類中(也就是說,在這些類中可以使用在外部定義的靜態方法)。那么要往哪個類中插入呢?這就要在定義靜態方法時指定了。大家可以看看getName方法的第一個參數,使用了this關鍵字,這就表明這個方法是一個擴展方法,后面的類型就是要插入該方法的類,在本例中是Class1,也就是說在Class1及其子類中都可以使用getName方法。上面的調用代碼也相當于下面的代碼:

 

  1. Class2 c = new Class2();  
  2. MessageBox.Show(AnyClass
    Name.getName(c)); 

 

但使用c.getName可能會更好一些,而且也降低了對靜態方法所在的類(AnyClassName)的依賴性。

在使用.NET Framework擴展方法時應注意以下幾點:

1. 擴展方法所在的類名可以是任意合法的類名。

2. 擴展方法所在的類必須和使用擴展方法的代碼在同一個命名空間里,否則無法編譯通過。

3. 在本例中,Class1和Class2只能聲明成public,因為AnyClassName被聲明為public。如果AnyClassName不加修飾符,Class1和Class2也可以不加修飾符,當然,也可以被聲明為public。也就是說,Class1和Class2必須有比AnyClassName具有更強的訪問性。如下面代碼所示:

 

  1. class Class1  
  2. {  
  3. public String s = "bill";  
  4. }  
  5. class Class2 : Class1  
  6. {  
  7. }  
  8. static class AnyClassName   
  9. // 這時如果前面加public是無法編
    譯通過的。  
  10. {  
  11. public static String getName
    (this Class1 class1)  
  12. {  
  13. return class1.s + class1.s;   
  14. }  

4. 如果在Class1或Class2中已經有getName方法了,那么Class1或Class2中的getName優先級更高。也就是說,擴展方法是無法覆蓋原類中的同名(參數名和類型也相同)的方法的。

.NET Framework擴展方法尤其在很多類需要同樣的方法,而這些類又無法繼承其它類時特別有用。當然,在要對某個類進行擴展,但我們并沒有源代碼時,擴展方法也可以派上用場。

責任編輯:曹凱 來源: 博客園
相關推薦

2011-04-07 12:52:05

Oracle數據庫

2021-02-10 16:08:43

區塊鏈數據挖礦

2018-07-17 08:46:40

網絡存儲常識

2011-07-15 09:20:52

C語言文件操作

2011-03-10 13:19:47

Oracle數據庫

2009-08-26 14:23:14

C#.Net Fram

2014-08-21 10:12:07

2021-12-14 11:07:55

Log4ShellJNDI漏洞

2010-01-05 16:20:46

.NET Framew

2009-12-30 10:14:41

ADO.NET Ent

2013-02-18 09:50:44

2010-07-21 11:17:30

2009-07-20 16:04:37

ASP.NET fra

2010-01-05 18:49:57

.NET Framew

2010-01-05 10:17:35

.NET Framew

2010-01-06 18:33:56

.Net Framew

2010-01-05 15:27:04

.NET Framew

2010-01-05 15:43:13

.NET Framew

2010-01-05 18:21:33

.NET Framew

2010-01-21 10:48:18

VB.NET擴展方法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一区二区三区视频免费观看 | 国产黄色在线观看 | 国产一区二区三区在线视频 | 国产精品福利在线观看 | 国产精品久久久久久一区二区三区 | 欧美视频区| 日韩欧美精品在线 | 久久精品色欧美aⅴ一区二区 | 午夜视频一区 | 一区二区高清在线观看 | 亚洲国产精品一区二区三区 | 久久久久久久亚洲精品 | 亚洲视频在线观看 | av永久| 一区二区三区四区国产 | 99爱在线视频 | 一区精品国产欧美在线 | 久久久爽爽爽美女图片 | 久久99久久98精品免观看软件 | 久久大陆| 日本黄色影片在线观看 | 日韩视频精品在线 | 香蕉久久a毛片 | 亚洲综合网站 | 激情五月婷婷丁香 | 久久亚洲一区二区 | 亚洲精品毛片av | 久久免费精品视频 | 一区二区三区精品视频 | 久久这里只有精品首页 | 久久国产精品免费一区二区三区 | 一区二区三区在线播放视频 | 亚洲欧美中文日韩在线v日本 | 久夜精品 | 国产精品日本一区二区在线播放 | 极品久久 | 91天堂网| 91精品亚洲 | 欧美一区免费 | 国产精品久久久亚洲 | 国产日韩欧美一区二区 |