面向对象——分部类

简介: 面向对象——分部类

概念:可以将类、构造、接口拆分到两个或多个源文件中。每个源文件包含类定义的一部分,编译应用程序时Visual Studio 会吧所有部分类组合起来。这样的类称为分部类。其应用场合:


当项目比较庞大时,使用分部类可以拆分一个类至几个文件中。这样的处理,可以使得不同的开发人员同时进行开发,避免了效率低下。

Visual Studio 的自动生成代码。如添加一个窗体是,Visual Studio会自动生成许多的代码使用分部类,将这些代码放在单独的文句中,可以使类更简洁,方便操作。

分部类使用partial 关键字定义。如下代码定义了一个分部类。


namespace JieKou


{

   class Program


   {

   


       static void Main(string[] args)


       {

           MyClass myClass = new MyClass();


           myClass.SayHello();


           myClass.SayHi();


       }


   }


   partial class MyClass


   {

       public void SayHello()


       {

           Console.WriteLine("Hello World");


       }


   }


   partial class MyClass


   {

       public void SayHi()


       {

           Console.WriteLine("Hi");


       }


   }


}


可以看到分部类的使用与普通类相同,只要在分部类中任意一个部分定义了相应的方法或者属性,都可以使用。用功能代码的存储。这是一种合理的分配方式。同样、接口或结构使用partial关键字来修饰


 partial interface IMyInterFace


   {

       void SayHello();


   }


   partial interface IMyInterFace


   {

       void SayHi();


   }


   class MyClass : IMyInterFace


   {

       public void SayHello()


       {

           Console.WriteLine("Hello World");


       }


       public void SayHi()


       {

           Console.WriteLine("Hi");


       }


}


使用分部类注意事项:


如果一个类前面加了partial关键字,说明该类是分部类,虽然并没有该类的其他部分,单C#依然将其作为分部类来处理。虽然这样写不会报错,但应该避免这种用法,不然会增加.NetFramework的负担,因为.NetFramework会搜索其他部分。

各个部分必须具有相同的可访问性,如public、private等。

分部类的各个部分必须都用partial限定,如果一部分是partial另外一部分不是,就会出现错误。

在两个部分分别使其继承了不同的类和接口,运行时.NetFramework能够很好地将其结合。

Partial关键字的位置必须位于紧接class、interface以及struct的位置。当违反上述规则后,将给出错误提示。


目录
相关文章
|
Java
Java面向对象程序设计综合练习2(填空题)(下)
Java面向对象程序设计综合练习2(填空题)(下)
798 0
Java面向对象程序设计综合练习2(填空题)(下)
|
存储 Java
Java面向对象程序设计综合练习2(填空题)(上)
Java面向对象程序设计综合练习2(填空题)(上)
682 0
Java面向对象程序设计综合练习2(填空题)(上)
|
11月前
|
编译器 C++
C++之面向对象(中)(一)
C++之面向对象(中)(一)
53 0
|
11月前
|
编译器 C++
C++之面向对象(下)(二)
C++之面向对象(下)(二)
55 0
|
11月前
|
编译器 C语言 C++
C++之面向对象(上)(一)
C++之面向对象(上)(一)
50 0
|
11月前
|
编译器 C++
C++之面向对象(中)(三)
C++之面向对象(中)(三)
37 0
|
11月前
|
编译器 C++
C++之面向对象(下)(一)
C++之面向对象(下)(一)
27 0
|
11月前
|
存储 编译器 C++
C++之面向对象(中)(二)
C++之面向对象(中)(二)
41 0
|
11月前
|
存储 编译器 C语言
C++之面向对象(上)(二)
C++之面向对象(上)(二)
63 0
|
11月前
|
存储 编译器 C语言
C++之面向对象(上)(三)
C++之面向对象(上)(三)
33 0