《C#高级编程》笔记系列第三弹
? ? 我們在開發WinForm時,經常會看到partial關鍵字,比如,我們新建一個Windows Form時,后臺代碼自動添加如下:
1?public?partial?class?Form1?:?Form2?{
3?????public?Form1()
4?????{
5?????????InitializeComponent();
6?????}
7?}
????
??? 《C#高級編程》書中說明:partial關鍵字允許把類、結構或接口放在多個文件中。一般情況下,一個類存儲在單個文件中,但有時,多個開發人員需要訪問同一個類,或者某種類型的代碼生成器生成了一個類的某部分,所以把類放在多個文件中是有益的。
??? 也就是說,我們定義的一個類可以分開幾個文件來存儲,而各個文件都只是完成這個類的一部分功能。我們在使用這個類時,根本體會不到這個類是由幾部分結合在一起共同組成的。比如我分別在兩個地方定義了Box類的一部分:
{
????public?Box(string?newBoxName)
????{
????????boxName?=?newBoxName;//在這個部分類中,并沒有出現boxName局部變量。但是卻是可以使用的。
????}
????public?void?Open()
????{//打開盒子
????????Console.WriteLine(boxName?+?"?is?opened");
????}
}
public?partial?class?Box
{
????private?string?boxName?=?string.Empty;//boxName是在這個部分類中定義的哦
????public?void?Close()
????{//關閉盒子
????????Console.WriteLine(boxName?+?"?is?closed");
????}
};
??? 上面的代碼等同于下面的Box類:
{
????private?string?boxName?=?string.Empty;
????public?Box(string?newBoxName)
????{
????????boxName?=?newBoxName;
????}
????public?void?Open()
????{//打開盒子
????????Console.WriteLine(boxName?+?"?is?opened");
????}
????public?void?Close()
????{//關閉盒子
????????Console.WriteLine(boxName?+?"?is?closed");
????}
}
????
??? 書中還有一段:在把部分類編譯到類型中時,會合并屬性、XML注釋、接口、一般類型的參數屬性和成員。
????
??? 所以自己可以去設計一些小Demo去嘗試一下。現在回到最開始的問題,為什么新建立的Winows Form的類定義成了一個部分類。我們打開Form1.Designer.cs文件,可以看到,原來Form1的另一部分類是在這個文件中設計的。這個部分類中定義了我們使用的控件、事件委托以及如Dispose方法等。因為這里面的代碼都是自動生成的,因此設計成了一個部分類。OK,原來partial如此簡單,就到這啦!
轉載于:https://www.cnblogs.com/yechanglv/p/6923075.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的《C#高级编程》笔记系列第三弹的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 产品读书《大败局 I》 《大败局II》
- 下一篇: c# char unsigned_dll