利用partial关键字声明分部类和分部方法

一、分部类

1、分部类的定义:简单的说,分部类就是把一个类拆分成多个类,每个类文件只包含其中的一部分,类、结构、接口、方法都可以拆分,在定义的时候加上partial修饰符。

分部类必须属于同一命名空间。

2、分部类的应用:

@1、分部类对于代码生成或修改工具来说意义重大。使用分部类,这些工具操作的文件可以独立于开发者正在人工编码的文件。

  例如:假如一个代码生成工具能根据数据库中的Person表为Person类生成对应的Person.Designer.cs文件。这个工具将检查表的内容,并为表中的每一列都创建属性。问题在于,这个工具经常都不能生成一些必要的验证逻辑,因为这些验证逻辑要依赖于没有嵌入数据库表定义的业务规则。在这种情况下,Person类的开发者需要自己添加验证逻辑。Person.Designer.cs是不好直接修改的,因为假如文件被重新生成(例如,为了适应数据库中新增的一个列而重新生成文件),所做的更改就会丢失。在这种情况下,Person类的代码结构应独立出来,是生成的代码在一个文件中,定制的代码(带有业务规则)则在另一个文件中。后者不受任何重新生成动作的影响。

@2、将每个嵌套类都放到他们自己的文件中。这是为了与编程规范”将每个类定义都放到它自己的文件中“保持一致。

注意:分部类不允许对编译好的类(其他程序集中的类)进行扩展。只能利用分部类在同一个程序集中经一个类的实现分解到多个文件中。

二、分部方法

@1、分部方法只能存在于分部类中,必须加上partial,不能有访问修饰符,因此是隐式私有的。其主旨是为了代码的生成提供方便。

@2、分部方法允许声明一个方法而不需要一个实现。如果包含了可选的实现,这个实现可以放到某个姊妹分部类的定义中(可能在一个单独的文件中)。

@3、分部方法使程序能调用未实现的方法,而不会发生编译错误。如果程序中未提供分部方法的实现,则编译器会自动移除方法签名,以及所有对该方法的调用。也就是说,如果没有为一个分部方法提供实现,CIL中不会出现分部方法的任何踪迹。这样,在保持代码尽量小的同时,还保持了高地灵活性。

@4、分部方法的返回值类型必须是void。原因:如果不是返回null,同时没有提供实现,那么调用一个未实现的方法,返回什么才合理呢?为了避免对返回值进行任何无端的猜测,c#的设计者决定只允许方法返回void。类似的,out参数在分部方法中是不允许的。如果需要一个返回值,可以使用ref参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值