欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Partial怎么在C#中使用-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)Partial怎么在C#中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)是一家專(zhuān)注于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),興寧網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:興寧等地區(qū)。興寧做網(wǎng)站價(jià)格咨詢(xún):13518219792

C# 2.0 可以將類(lèi)、結(jié)構(gòu)或接口的定義拆分到兩個(gè)或多個(gè)源文件中,在類(lèi)聲明前添加partial關(guān)鍵字即可。

例如:下面的PartialTest類(lèi)

class PartialTest
{
  string Str_FieldTest; 
  int Int_FieldTest; 
  public void DoTest() 
  { 
    Debug.Print("Test"); 
  }
}

 可在不同源文件中寫(xiě)成下面形式:

一個(gè)文件中寫(xiě):

partial class PartialTest
{
  string Str_FieldTest;
  int Int_FieldTest;
}

另一個(gè)文件中寫(xiě):

partial class PartialTest
{
  public void DoTest()
  {
  Debug.Print("Test");
  }
}

一、什么情況下使用分部類(lèi)?

  • 處理大型項(xiàng)目時(shí),使一個(gè)類(lèi)分布于多個(gè)獨(dú)立文件中可以讓多位程序員同時(shí)對(duì)該類(lèi)進(jìn)行處理(相當(dāng)于支持并行處理,很實(shí)用);

  • 使用自動(dòng)生成的源時(shí),無(wú)需重新創(chuàng)建源文件便可將代碼添加到類(lèi)中。Visual Studio 在創(chuàng)建Windows 窗體、Web 窗體時(shí)都使用此方法。你不用編輯Visual Studio 所創(chuàng)建的文件,便可創(chuàng)建使用這些類(lèi)的代碼。換句話(huà)說(shuō):系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)文件(一般記錄的是窗體及窗體中的控件的屬性),另一個(gè)或幾個(gè)文件記錄的是用戶(hù)自己編寫(xiě)的代碼。這兩部分分開(kāi)可以使結(jié)構(gòu)顯得非常清晰,用戶(hù)只需關(guān)注自己負(fù)責(zé)的那部分就行了(需要的話(huà),這兩部分可以互相調(diào)用)。等到了編輯運(yùn)行的時(shí)候,系統(tǒng)會(huì)自動(dòng)將這兩部分合成一個(gè)文件。


二、使用Partial需要注意以下一些情況

  • 使用partial 關(guān)鍵字表明可在命名空間內(nèi)定義該類(lèi)、結(jié)構(gòu)或接口的其他部分

  • 所有部分都必須使用partial 關(guān)鍵字

  • 各個(gè)部分必須具有相同的可訪問(wèn)性,如public、private 等

  • 如果將任意部分聲明為抽象的,則整個(gè)類(lèi)型都被視為抽象的

  • 如果將任意部分聲明為密封的,則整個(gè)類(lèi)型都被視為密封的

  • 如果任意部分聲明繼承基類(lèi)時(shí),則整個(gè)類(lèi)型都將繼承該類(lèi)

  • 各個(gè)部分可以指定不同的基接口,最終類(lèi)型將實(shí)現(xiàn)所有分部聲明所列出的全部接口

  • 在某一分部定義中聲明的任何類(lèi)、結(jié)構(gòu)或接口成員可供所有其他部分使用

  • 嵌套類(lèi)型可以是分部的,即使它們所嵌套于的類(lèi)型本身并不是分部的也如此。如下所示:

class Container
{
  partial class Nested
  {
    void Test1();
  }
  partial class Nested
  {
    void Test2();
  }
}

三、使用分布類(lèi)的一些限制

1、要作為同一類(lèi)型的各個(gè)部分的所有分部類(lèi)型定義都必須使用partial 進(jìn)行修飾。如下所示:

public partial class A { }
public class A { } // Error, must also be marked partial

2、partial 修飾符只能出現(xiàn)在緊靠關(guān)鍵字class、struct 或interface前面的位置(枚舉或其它類(lèi)型都不能使用partial);

3、要成為同一類(lèi)型的各個(gè)部分的所有分部類(lèi)型定義都必須在同一程序集和同一模塊(.exe 或.dll 文件)中進(jìn)行定義。分部定義不能跨越多個(gè)模塊;

4、類(lèi)名和泛型類(lèi)型參數(shù)在所有的分部類(lèi)型定義中都必須匹配。泛型類(lèi)型可以是分部的。每個(gè)分部聲明都必須以相同的順序使用相同的參數(shù)名。

四、應(yīng)用場(chǎng)景

可以使用partial class的場(chǎng)景很多。這里分析一個(gè)ORM的例子。系統(tǒng)中有一個(gè)Cat類(lèi),屬性ID、Age、Weight都需要存儲(chǔ)到數(shù)據(jù)庫(kù)中,一個(gè)信息系統(tǒng)中常見(jiàn)的需求。通過(guò)讀取數(shù)據(jù)庫(kù)的結(jié)構(gòu),可以用工具生成Cat類(lèi)的代碼。并且ORM框架支持了從數(shù)據(jù)庫(kù)信息生成Cat對(duì)象。

現(xiàn)在的Cat什么動(dòng)作都沒(méi)有,客戶(hù)說(shuō),我們需要一個(gè)Miaow()的函數(shù)。這時(shí)就需要對(duì)ORM生成的Cat類(lèi)進(jìn)行擴(kuò)展了。可以肯定地一點(diǎn)是,我們不能修改自動(dòng)生成的代碼,因?yàn)檫@會(huì)牽涉到數(shù)據(jù)庫(kù)結(jié)構(gòu)與代碼同步的問(wèn)題。解決這個(gè)需求有兩種方法:繼承方式擴(kuò)展,partial class擴(kuò)展。

1、繼承方式擴(kuò)展


工具自動(dòng)生成一個(gè)CatBase類(lèi),這個(gè)類(lèi)只有屬性,嵌入到ORM框架中。既然需要擴(kuò)展功能,很容易想到對(duì)這個(gè)基類(lèi)繼承,于是有了Cat類(lèi)。Cat類(lèi)如愿以?xún)數(shù)赜辛薓iaow()函數(shù)。以前系統(tǒng)中用的是CatBase的實(shí)例,現(xiàn)在創(chuàng)建CatBase實(shí)例的地方需要改為創(chuàng)建Cat的實(shí)例。這個(gè)問(wèn)題讓ORM框架解決吧??蛻?hù)的需求實(shí)現(xiàn)了,我們自己的代碼生成也沒(méi)有遭到破壞,任務(wù)完成。

2、partial class擴(kuò)展


partial class簡(jiǎn)單地說(shuō)就是可以將一個(gè)類(lèi)的代碼寫(xiě)到兩個(gè)或多個(gè)代碼文件中。編譯器在編譯的過(guò)程中將這幾個(gè)文件組合起來(lái)一起編譯。一個(gè)很酷的技術(shù)。工具生成的Cat類(lèi)仍然不變。既然需要增加函數(shù),那么在新建一個(gè)代碼文件,將Miaow()函數(shù)寫(xiě)出來(lái)就可以。需要做的僅僅是將類(lèi)的聲明由class改為partial class,任務(wù)完成。

3、對(duì)比分析


兩種思路都可以實(shí)現(xiàn)需求。孰優(yōu)孰劣需要仔細(xì)分析一下。

  • 實(shí)例創(chuàng)建:partial class更加簡(jiǎn)潔。

  • 系統(tǒng)復(fù)雜度:對(duì)于系統(tǒng)來(lái)說(shuō),partial class方式下只存在一個(gè)類(lèi),而繼承方式有兩個(gè)類(lèi)。

  • 繼承邏輯:從邏輯上講,Cat并不需要一個(gè)基類(lèi)CatBase,這樣做僅僅是因?yàn)樵诖a構(gòu)建過(guò)程中的一個(gè)限制。

  • 維護(hù)性:兩種方式下都會(huì)存在兩個(gè)代碼文件,維護(hù)成本并沒(méi)有區(qū)別。

  • 可讀性:兩個(gè)Cat文件確實(shí)讓人費(fèi)解。

看完上述內(nèi)容,你們對(duì)Partial怎么在C#中使用有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

網(wǎng)頁(yè)標(biāo)題:Partial怎么在C#中使用-創(chuàng)新互聯(lián)
標(biāo)題來(lái)源:http://chinadenli.net/article2/jghic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)公司、外貿(mào)網(wǎng)站建設(shè)做網(wǎng)站、小程序開(kāi)發(fā)網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
国产午夜精品久久福利 | 日韩成人动画在线观看| 精品人妻一区二区四区| 亚洲国产色婷婷久久精品| 绝望的校花花间淫事2| 欧美黑人巨大一区二区三区| 一二区中文字幕在线观看| 午夜视频成人在线观看| 人妻亚洲一区二区三区| 欧美黄色黑人一区二区| 日本亚洲精品在线观看| 日韩在线视频精品视频| 欧美人妻盗摄日韩偷拍| 国产高清精品福利私拍| 亚洲精品福利视频你懂的| 日韩欧美国产精品自拍| 国产三级视频不卡在线观看| 欧美日韩黑人免费观看| 1024你懂的在线视频| 欧美日韩成人在线一区| 欧美国产日韩在线综合| 欧美性欧美一区二区三区| 中文字幕人妻一区二区免费| 久久精品中文字幕人妻中文| 成人午夜视频在线播放| 好吊色免费在线观看视频| 粉嫩国产美女国产av| 色欧美一区二区三区在线| 色偷偷亚洲女人天堂观看| 国产一区一一一区麻豆| 国产免费操美女逼视频| 亚洲欧美国产网爆精品| 午夜精品久久久免费视频| 五月婷婷缴情七月丁香| 精品人妻一区二区三区四区久久| 国产免费一区二区三区av大片 | 国产日产欧美精品视频| 五月婷婷缴情七月丁香| 国产在线观看不卡一区二区| 午夜亚洲少妇福利诱惑| 免费大片黄在线观看国语|