c#分部类型详解

一.先看代码来理解

 代码一

1 class ClassA
2 {
3       void A(){;}
4       void B(){;}
5 }

代码二

1 partial class ClassA
2 {
3       void A(){;}
4 }
5 partial class ClassA
6 {
7       void B(){;}
8 }

代码一和代码二效果是一样的,引用类的成员完全一样,只是声明不不同而已。主要partial在这里是分部类型的关键词

编译过程图解

二.应用场景

  1.嵌套在一个类里面

 1 class Container
 2 {
 3 partial class Nested
 4 {
 5 void Test() { }
 6 }
 7 partial class Nested
 8 {
 9 void Test2() { }
10 }
11 } 

  2.分部类型给予不同的特性

 1 [System.SerializableAttribute]
 2 partial class Moon { } 
 3 
 4 [System.ObsoleteAttribute]
 5 partial class Moon { } 
 6 
 7 
 8 //等效于下面
 9 
10 [System.SerializableAttribute]
11 [System.ObsoleteAttribute]
12 class Moon { } 

 3.继承不同的基类

  

1 partial class Earth : Planet, IRotate { }
2 partial class Earth : IRevolve { } 
3 
4 //等效于
5 class Earth : Planet, IRotate, IRevolve { }

 4.一个类在不同的文件下面定义

  

 1 //文件一下
 2 namespace PC
 3 {
 4     partial class A
 5     {
 6         int num = 0;
 7         void MethodA() { }
 8         partial void MethodC();
 9     }
10 }
1 //文件二下
2 namespace PC
3 {
4     partial class A
5     {
6         void MethodB() { }
7         partial void MethodC() { }
8     }
9 }

 欢迎继续补充

三.总结

   分部类型只是在定义时候,注意用partial关键词,调用时候不影响

  它不只可以用在类,还可以用在接口,结构定义

 

原文地址:https://www.cnblogs.com/rowping/p/3737358.html