知识大全 C# partial 说明

Posted 类型

篇首语:只要学不死,就往死里学。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C# partial 说明相关的知识,希望对你有一定的参考价值。

C# partial 说明  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   什么是局部类型?

  C# 引入了局部类型的概念 局部类型允许我们将一个类 结构或接口分成几个部分 分别实现在几个不同的 cs文件中

  局部类型适用于以下情况

  ( ) 类型特别大 不宜放在一个文件中实现

  ( ) 一个类型中的一部分代码为自动化工具生成的代码 不宜与我们自己编写的代码混合在一起

  ( ) 需要多人合作编写一个类

  局部类型是一个纯语言层的编译处理 不影响任何执行机制 事实上C#编译器在编译的时候仍会将各个部分的局部类型合并成一个完整的类

  public partial class Program

  

  static void Main(string[] args)

  

  

  

  partial class Program

  

  public void Test()

  

  

  

   局部类型的限制

  ( ) 局部类型只适用于类 接口 结构 不支持委托和枚举

  ( ) 同一个类型的各个部分必须都有修饰符 partial

  ( ) 使用局部类型时 一个类型的各个部分必须位于相同的命名空间中

  ( ) 一个类型的各个部分必须被同时编译

   局部类型的注意点

  ( ) 关键字partial是一个上下文关键字 只有和 class struct interface 放在一起时才有关键字的含义 因此partial的引入不会影响现有代码中名称为partial的变量

  ( ) 局部类型的各个部分一般是分开放在几个不同的 cs文件中 但C#编译器允许我们将他们放在同一文件中

   局部类型的应用特性

  在局部类型上的特性具有 累加 效应

  [Attribute Attribute ( Hello )]

  partial class Class

  [Attribute Attribute ( Exit )]

  partial class Class

  相当于

  [Attribute Attribute ( Hello ) Attribute Attribute ( Exit )]

  class Class

  注 Attribute 属性允许在类上多次使用

   局部类型上的修饰符

  ( ) 一个类型的各个部分上的访问修饰符必须维持一致性

  ( ) 如果一个类型有一个部分使用了abstract修饰符 那么整个类都将被视为抽象类

  ( ) 如果一个类型有一个部分使用了 sealed 修饰符 那么整个类都将被视为密封类

  ( ) 一个类的各个部分不能使用相互矛盾的修饰符 比如不能在一个部分上使用abstract 又在另一个部分上使用sealed

   局部类型的基类和接口

  ( ) 一个类型的各个部分上指定的基类必须一致 某个部分可以不指定基类 但如果指定 则必须相同

  ( ) 局部类型上的接口具有 累加 效应

  partial class Class : Iinterface Iinterface

  partial class Class : Iinterface

  partial class Class : Iinterface

  相当于

  class Class : Iinterface Iinterface Iinterface

  把所有的源代码作为一个类型保存在一个单独的文件里是一个好的编程习惯 但有时候一个类型变得过于庞大以至于这样做成为一个不切实际的约束 此外 编程人员经常使用源代码生成器来产生一个应用程序的初始结构 然后再修改产生的代码 不幸的是 当源代码在将来某个时候再次发布时 已存在的修改就要被覆蓋了

  Partial types允许把类 结构和接口打破为多个代码碎片存在不同的源代码文件 以便于简化开发和维护 加之partial types允许机器产生的和用户编写的类型部分分离 这样就可以方便增加工具产生的代码

  Partial 是一个新的类型修饰符 在把一个类型定义在多个部分的时候使用 下面是一个partial class的示例 以两个部分实现 这两个部分可能在两个不同的源代码文件 比如说第一个部分是由一个数据库映射工具产生的 而第二个部分是手工编写的

  public partial class Customer

  

  private int id;

  private string name;

  private string address;

  private List<Order> orders;

  public Customer()

  

  

  public partial class Customer

  

  public void SubmitOrder(Order order)

  orders Add(order)

  

  public bool HasOutstandingOrders()

  return orders Count > ;

  

  

  当上面的两个部分在一起编译 结果产生的代码就好像这个类是写在一个单元里一样

  public class Customer

  

  private int id;

  private string name;

  private string address;

  private List<Order> orders;

  public Customer()

  

  public void SubmitOrder(Order order)

  orders Add(order)

  

  public bool HasOutstandingOrders()

  return orders Count > ;

  

  

cha138/Article/program/net/201311/12084

相关参考

知识大全 c#语言的三种注释方式

  c#语言的三种注释方式:  classProgram    ///<summary>  ///这是整个方法的说明  ///</summary>  ///<paramn

知识大全 浅谈C#闭包的相关原理

浅谈C#闭包的相关原理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先想说明一点虽然有这样那

知识大全 C#构造函数的 继承 问题

C#构造函数的继承问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先说明下之所以用双引号是

知识大全 用C#来实现以动画的方式显示图像

用C#来实现以动画的方式显示图像  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  说明  由于是以

知识大全 c# 实现自定义属性改变触发自定义事件

  代码内含说明(界面是两个文本框textboxtextbox和一个button界面的Load事件button的click事件)usingSystem;usingSystemCollectionsGe

知识大全 关于C# readonly关键字的分析

关于C#readonly关键字的分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  为了便于说明

知识大全 关于使用basepage进行验证的问题

  在(fx)中采用了和(fx)不同的编译模型在fx中Page_Load事件的挂接是写在CodeBehind的代码中的到了fx采用了partial关键字后估计是编译器自动产生了代码再和codefile

知识大全 C#学习之——认识C#的内部类

C#学习之——认识C#的内部类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C#中的内部类能够

知识大全 C#语言学习:C#数据报编程之测试程序

C#语言学习:C#数据报编程之测试程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C#中自定

知识大全 叩开C#之门系列之C#与面向对象编程语言

叩开C#之门系列之C#与面向对象编程语言  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C#是纯