zoukankan      html  css  js  c++  java
  • 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关键词,调用时候不影响

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

     

  • 相关阅读:
    phalcon之视图缓存
    Java NIO框架Netty教程(一) – Hello Netty
    setsockopt的作用
    支持向量机通俗导论(理解SVM的三层境地)
    quartz中的corn表达式(转)
    Applet 数字签名技术全然攻略
    SJTU 3001. 二哥的幸运
    OGRE之跳出漫长的编译等待
    VB.NET 数组的定义 动态使用 多维数组
    【Python】用Python的“结巴”模块进行分词
  • 原文地址:https://www.cnblogs.com/rowping/p/3737358.html
Copyright © 2011-2022 走看看