• 天轰穿C# vs2010 04面向对象的编程之分部类 【原创】


    小天:分部类,是不是指同一个类的代码分布在多个类文件中呢?和继承是不是一回事?

           老田:你说的这个不是一回事。继承那是多个类之间的玩法,这个和文件之间是没有关系的。还记得前面我们说到过,类名字和文件名字不必相同(但最好是相同的)。其实前面的实例中也多次看到,在一个文件中是可以放多个类的。

           至于你说让多个文件共同完成一个类。我想你要表述的应该是一个类的代码分布在多个文件中吧?

           这个需要使用partial关键字来完成。partial关键字允许把类、结构或接口放在多个文件中。一般情况下,一个类存储在单个文件中。但有时,多个开发人员需要访问同一个类,或者某种类型的代码生成器生成了一个类的某部分,所以把类放在多个文件中是有益的。

    partial关键字的用法是:把partial放在class、struct或interface(接口,后面讨论)关键字的前面。在下面的例子中,ParClass类位于两个不同的源文件ParClass1.cs和ParClass2.cs中:

        //ParClass1.cs 文件中的类

        partial class ParClass   //类名ParClass

        {

            /// <summary>

            /// ClassA中的方法,这种情况下,练习的时候一定要加注释效果才明显

            /// </summary>

            public void MethodOne()

            {     

                //方法体

            }

        }

     

        //ParClass2.cs 文件中的类

        partial class ParClass   //类名ParClass

        {

            /// <summary>

            /// ClassB中的方法

            /// </summary>

            public void MethodTwo()

            {

                //方法体

            }

        }

    编译包含这两个源文件的项目时,会创建一个ParClass类,它有两个方法MethodOne() 和MethodTwo()。使用效果如图4-23:

     

                                                            图4-23

           小天:我想到一个很严重的问题,按照你上面的例题来看,其实所谓的分部类,其实就是在多个文件中创建同名的类,而类前面增加了关键字partial。但是这个过程中,如果使用了封装中讲到的访问修饰符,那怎么算?

    老田:如果声明类时使用了下面的关键字,这些关键字将应用于同一个类的所有部分:

    ●     public

    ●     private

    ●     protected

    ●     internal

    ●     abstract

    ●     sealed

    ●     new

    ●     一般约束

    在嵌套的类型中,只要partial关键字位于class关键字的前面,就可以嵌套部分类。在把分部类编译到类型中时,会合并属性、XML注释、接口、泛型类型的参数属性和成员。

    小提示:其实最典型的分部类,就是Windows桌面应用程序中的窗体,在资源管理器中随便找到一个窗体文件,点开前面的 + 号,可以看见都有一个 “窗体名.Designer.cs”,点开他可以看见它的类定义的代码。然后在窗体上右键,查看代码,看这个类的定义部分。

     本文章为天轰穿原创作品,转载请注明出处及作者。

  • 相关阅读:
    该伙伴事务管理器已经禁止了它对远程/网络事务的支持
    HDU 4883 TIANKENG’s restaurant (贪心)
    Android:创建可穿戴应用
    debian支持ll命令
    mongodb进阶一之高级查询
    Hadoop之——又一次格式化hdfs系统的方法
    J2EE的13个规范之(二) JDBC 及其使用
    2015欧冠决赛--脑力劳动结硕果
    运行计划之误区,为什么COST非常小,SQL却跑得非常慢?
    QVariant与自定义数据类型转换的方法
  • 原文地址:https://www.cnblogs.com/thcjp/p/2876560.html
Copyright © 2020-2023  润新知