分部类(Partial Classes)

分部类(Partial Classes)

分部类(Partial Classes)
                                      网上淘来的 很好 呵呵~分部类(Partial Classes)

C# 2.0 可以将类、结构或接口的定义拆分到两个或多个源文件中,在类声明前添加partial关键字即可。

例如:下面的PartialTest

class PartialTest

{

string Str_FieldTest;

int Int_FieldTest;

public void DoTest()

{

Debug.Print(“Test”);

}

}

可在不同源文件中写成下面形式:

一个文件中写:

partial class PartialTest

{

string Str_FieldTest;

int Int_FieldTest;

}

另一个文件中写:

partial class PartialTest

{

public void DoTest()

{

Debug.Print(“Test”);

}

}

什么情况下使用分部类?

        处理大型项目时,使一个类分布于多个独立文件中可以让多位程序员同时对该类进行处理(相当于支持并行处理,很实用);

        使用自动生成的源时,无需重新创建源文件便可将代码添加到类中。Visual Studio 在创建Windows 窗体、Web 窗体时都使用此方法。你不用编辑Visual Studio 所创建的文件,便可创建使用这些类的代码。换句话说:系统会自动创建一个文件(一般记录的是窗体及窗体中的控件的属性),另一个或几个文件记录的是用户自己编写的代码。这两部分分开可以使结构显得非常清晰,用户只需关注自己负责的那部分就行了(需要的话,这两部分可以互相调用)。等到了编辑运行的时候,系统会自动将这两部分合成一个文件。

使用Partial需要注意以下一些情况

1.      使用partial 关键字表明可在命名空间内定义该类、结构或接口的其他部分

2.      所有部分都必须使用partial 关键字

3.      各个部分必须具有相同的可访问性,如publicprivate

4.      如果将任意部分声明为抽象的,则整个类型都被视为抽象的

5.      如果将任意部分声明为密封的,则整个类型都被视为密封的

6.      如果任意部分声明继承基类时,则整个类型都将继承该类

7.      各个部分可以指定不同的基接口,最终类型将实现所有分部声明所列出的全部接口

8.      在某一分部定义中声明的任何类、结构或接口成员可供所有其他部分使用

9.嵌套类型可以是分部的,即使它们所嵌套于的类型本身并不是分部的也如此。如下所示:

class Container

{

  partial class Nested

 {

void Test1();

}

partial class Nested

{

 void Test2();

}

}

使用分布类的一些限制:

1.    要作为同一类型的各个部分的所有分部类型定义都必须使用partial 进行修饰。如下所示:

public partial class A { }

public class A { } // Error, must also be marked partial

2.  partial 修饰符只能出现在紧靠关键字classstruct interface前面的位置(枚举或其它类型都不能使用partial);

3.  要成为同一类型的各个部分的所有分部类型定义都必须在同一程序集和同一模块(.exe .dll 文件)中进行定义。分部定义不能跨越多个模块;

4.  类名和泛型类型参数在所有的分部类型定义中都必须匹配。泛型类型可以是分部的。每个分部声明都必须以相同的顺序使用相同的参数名。

转载于:https://www.cnblogs.com/ivy/archive/2008/06/27/1230997.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111010.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 随机抽奖小程序_在线随机抽号小程序

    随机抽奖小程序_在线随机抽号小程序本实例使用随机数字生成5位抽奖号码,并显示在窗体的5个文本框中。当用户单击"开始"按钮时,将启动一个线程对象为5个文本框生成随机数字。单击"抽奖"按钮时,线程对

    2022年8月2日
    4
  • 功率放大器电路设计「建议收藏」

    功率放大器电路设计「建议收藏」一、实验目的掌握功率放大器的设计方法。了解功率放大器的测试方法。二、实验内容及结果实验内容自主设计一低频功率放大器,满足如下要求:(1)输入正弦信号电压有效值为5mV,在8Ω电阻负载(一端接地)上,输出功率大于1W,输出波形无明显失真;(2)通频带为20Hz~20kHz;(3)输入电阻为600Ω。实验具体要求如下:(1)设计电路,利用Multisim软件绘制电路原理图。(2)阐述功率放大原理。(3)在输入信号有效值为5mV下,测量负载电压有效值,计算实际输出功率,验证是否满

    2022年6月6日
    31
  • pycharm安装库老是失败_申报状态已申报未导入

    pycharm安装库老是失败_申报状态已申报未导入解决Pycharm导入库失败的问题在pycharm中每一个project都可以有一个属于自己的库,在创建新project的时候会给到一个新的库,这个时候的话就有可能会出现安装过的库报错,还需要重新安装的问题。如果不是创建一个大工程的话可以把这个工程的库的路径指向默认的文件夹,然后在默认的文件夹中安装常用的库,然后小脚本之类的就指向这个文件夹,这样子就不用下次重新安装库了。acondana使用方法:https://blog.csdn.net/weixin_44857413/article/de

    2022年8月28日
    3
  • google maps api_js调用谷歌浏览器接口

    google maps api_js调用谷歌浏览器接口一:基本知识:1.使用谷歌地图API的第一步就是要注册一个API密钥,需要注重一下两点:1.假如使用API的页面还没有发布,只是在本地调试,可以不用密钥,随便用个字符串代替就可以了。

    2022年8月6日
    11
  • 阿里云轻量应用服务器、ECS云服务器和虚拟主机的区别

    阿里云轻量应用服务器、ECS云服务器和虚拟主机的区别阿里云轻量应用服务器、ECS云服务器和虚拟主机区别在哪?这三种机型都可以建站,不过对于不同用户来说还是有区别的。下面老魏从难易程度、权限等方面来说说。比较简单的是云虚拟主机,系统已经预装建站环境,用户安装程序后就可以建站了,不过权限很少,适用于入门级建站首选;而云服务器的对用户技术要求高一些,用户要自行搭建环境,自由程度很高,可以自由配置服务器,需要有专业技术人员来维护;轻量应用服务器是给新…

    2022年6月25日
    32
  • 《JavaScript 模式》读书笔记(3)— 字面量和构造函数1

    新的篇章开始了,本章开始,所有的内容都是十分有价值和意义的。本章主要的内容包括对象字面量、构造函数、数组字面量、正则字面量、基本值类型字面量以及JSON等。在大家的工作和实际应用中也有一定的指导意义。

    2022年3月25日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号