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

C#分部方法的應用場景

開發 后端
這里介紹C#分部方法的應用場景,C#分部方法和分部類型的初衷是類似的,一方面可以使得不同的開發者能夠同時編寫一個類型的不同部分,另一方面可以分離自動生成的代碼和用戶手寫的代碼。

C#分部方法的應用場景

C#分部方法和分部類型的初衷是類似的,一方面可以使得不同的開發者能夠同時編寫一個類型的不同部分,另一方面可以分離自動生成的代碼和用戶手寫的代碼。和分部類型一樣,分部方法也會在編譯初期被合并成一個方法定義。猜測:從微軟的角度來看,第二個“初衷”可能才是真正的初衷。

由此,分部方法有如下幾個應用場景:
場景1 出自In Case You Haven't Heard這篇文章
場景2 出自Visual Studio 2008的Linq to SQL技術
場景3 則是Anders Liu自已臆想出來的。

C#分部方法場景1 輕量級事件處理

有的時候,自動生成的代碼需要事件這類語言構造來通知用戶對某些操作進行處理,但實際上用于編寫的代碼就位于自動生成的類型之中。此時,或者需要觸發一個事件,或者就需要生成一個virtual方法來讓用戶繼承。但無論是事件還是繼承,開銷都是比較大的,所以可以通過分部方法來實現輕量級的處理方式。如下面的類:

  1. partialclassCustomer  
  2. {  
  3. stringname;  
  4.  
  5. publicstringName  
  6. {  
  7. get  
  8. {  
  9. returnname;  
  10. }  
  11. set  
  12. {  
  13. OnBeforeUpdateName();  
  14. OnUpdateName();  
  15. name=value;  
  16. OnAfterUpdateName();  
  17. }  
  18. }  
  19.  
  20. partialvoidOnBeforeUpdateName();  
  21. partialvoidOnAfterUpdateName();  
  22. partialvoidOnUpdateName();  

這里定義了三個分部方法,其意義不言而喻。假設這是系統自動生成的代碼,則我們只需在另外一個源代碼文件中的partial class Customer中實現這幾個分部方法即可。

C#分部方法場景2 自定義DataContext中的Insert、Update、Delete方法

當使用Linq to SQL向項目中加入了實體類之后,還會創建一個XxxDataContext類,這個類繼承自DataContext類,并且是partial的。這個類封裝了具體的數據庫操作功能(實體類僅封裝數據庫中的數據),如對象的插入、更新和刪除等。

下面我們來看一下這個自動生成的類定義:

  1. publicpartialclassAdventureWorksDataContext:System.Data.Linq.DataContext  
  2. {  
  3.  
  4. privatestaticSystem.Data.Linq.Mapping.
    MappingSourcemappingSource
    =newAttributeMappingSource();  
  5.  
  6. #regionExtensibilityMethodDefinitions  
  7. partialvoidOnCreated();  
  8. partialvoidInsertAWBuildVersion(AWBuildVersioninstance);  
  9. partialvoidUpdateAWBuildVersion(AWBuildVersioninstance);  
  10. partialvoidDeleteAWBuildVersion(AWBuildVersioninstance); 

這里我們可以看到一系列的partial方法。其中第一個OnCreated實際上屬于場景1中描述的情況,是一個輕量級的事件,表示 DataContext環境對象創建完畢。而其他partial方法則用于自定義DataContext的IUD操作。對于每一個表(實體類),這里都會出現一組InsertXxx、UpdateXxx和DeleteXxx方法。如果我們希望自定義刪除行為(如希望將一個IsDelete字段設置為 true來表示已刪除),則可以在另一個文件中擴展這個partial類,并為對應的Delete方法提供實現聲明。

C#分部方法場景3 新的調試信息輸出方法

這是Anders Liu臆想的場景,在分部方法的協助下,我們可以寫出這樣的代碼:

  1. partialclassCA  
  2. {  
  3. partialvoidDebugPrint(stringmsg);  
  4. ...  
  5. voidF()  
  6. {  
  7. ....  
  8. DebugPrint("aaa");  
  9. }  
  10. }  
  11.  
  12. partialclassCA  
  13. {  
  14. #ifDEBUG  
  15. partialvoidDebugPrint(stringmsg);  
  16. {  
  17. Debug.WriteLine(msg);  
  18. }  
  19. #endif  

這樣做的好處在于,我們還是反過來說罷,如果不這樣做,必須在每次調用調試代碼時都加入#if判斷。而這樣可以將調試代碼都寫成方法,在一處用#if進行判斷。

缺點在于,由于分部方法必須是私有的,所以必須針對每個類寫一套調試代碼。以上介紹C#分部方法的應用場景。

【編輯推薦】

  1. 淺析C# ArrayList
  2. C#對象初始化學習總結
  3. 使用C#正則表達式匹配相關字符串
  4. C#改寫方法學習筆記
  5. 概述C#加框和消框
責任編輯:佚名 來源: 博客園
相關推薦

2009-08-10 17:00:14

C#分部方法

2009-08-14 10:59:35

C#分部方法

2010-12-21 14:21:36

線程C#

2024-04-16 12:13:07

usingC#開發

2011-04-27 09:22:28

C#延遲加載

2012-10-23 09:32:07

2011-05-17 15:24:18

Shibboleth認證

2022-09-05 14:46:01

元宇宙區塊鏈人工智能

2016-10-21 15:07:11

2014-12-10 10:36:23

IaaS云應用場景

2021-06-04 15:45:43

XR虛擬現實虛擬經濟

2024-03-06 09:24:50

AsyncAwaitC#

2021-12-24 10:24:10

零信任

2019-04-10 15:43:12

SDN場景網絡架構

2010-08-31 19:45:26

DHCP server

2024-03-12 10:36:06

函數指針代碼

2009-08-28 12:47:30

C#靜態方法應用

2015-08-03 13:36:40

Docker技術優勢應用場景

2018-08-15 09:48:27

數據庫Redis應用場景

2020-12-28 10:56:20

無人機人工智能機器學習
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成人自拍 | 草久网| 91国产在线视频在线 | 午夜私人影院 | 成人免费视频观看视频 | 亚洲一区欧美 | 亚洲欧美一区二区三区在线 | 日本成人免费观看 | 欧美亚洲国语精品一区二区 | 黄视频网址 | 伊人狠狠干 | 在线一区二区三区 | 95国产精品| 日本免费一区二区三区四区 | 亚洲精品乱码久久久久久蜜桃91 | 成人国产精品久久 | 天堂中文av| 免费h视频 | 亚洲每日更新 | 欧美精品啪啪 | 国产精品久久久久影院色老大 | 国产成人jvid在线播放 | 成人高潮片免费视频欧美 | 日本精品一区二区三区四区 | 日韩精品一区二区三区中文字幕 | 高清av电影 | 欧美成人一区二区三区片免费 | 91亚洲一区 | 男女网站免费观看 | 亚洲精品国产一区 | 国产成人一区二区 | 天堂资源最新在线 | 亚洲精品成人在线 | 国产成人高清视频 | 免费一区 | 欧洲精品在线观看 | 欧美日韩在线一区 | 国产精品特级毛片一区二区三区 | 久久久久久久av | 一区视频| 毛片网在线观看 |