C#2.0介绍之Partial types

将所有源代码存于单个文件虽为好的编程习惯,但有时类型过大会受限,且代码修改易被覆盖。Partial types可将类、结构和接口拆分为多个代码碎片存于不同文件,便于开发和维护,还能分离机器生成和用户编写的代码,且所有部分需一起编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

None.gif public  partial  class  Customer
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
private int id;
InBlock.gif    
private string name;
InBlock.gif    
private string address;
InBlock.gif    
private List<Order> orders;
ExpandedSubBlockStart.gifContractedSubBlock.gif    
public Customer() dot.gif{
InBlock.gif        dot.gif
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
public  partial  class  Customer
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif    
public void SubmitOrder(Order order) dot.gif{
InBlock.gif        orders.Add(order);
ExpandedSubBlockEnd.gif    }

ExpandedSubBlockStart.gifContractedSubBlock.gif    
public bool HasOutstandingOrders() dot.gif{
InBlock.gif        
return orders.Count > 0;
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

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

None.gif public   class  Customer
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
private int id;
InBlock.gif    
private string name;
InBlock.gif    
private string address;
InBlock.gif    
private List<Order> orders;
ExpandedSubBlockStart.gifContractedSubBlock.gif    
public Customer() dot.gif{
InBlock.gif        dot.gif
ExpandedSubBlockEnd.gif    }

ExpandedSubBlockStart.gifContractedSubBlock.gif    
public void SubmitOrder(Order order) dot.gif{
InBlock.gif        orders.Add(order);
ExpandedSubBlockEnd.gif    }

ExpandedSubBlockStart.gifContractedSubBlock.gif    
public bool HasOutstandingOrders() dot.gif{
InBlock.gif        
return orders.Count > 0;
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif

一个partial type的所有部分必须在一起编译,这样所有的部分才能在编译的时候整合在一起。特别的是partial types不允许加入已经编译好的类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值