分部类(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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 免费国内php空间_评测对焦速度

    免费国内php空间_评测对焦速度国外免费PHP空间终极对比,来自http://www.free-webhosts.com/php-hosting-comparison.php,http://www.free-webhosts.com是国外一家专业收集免费空间的网站,本博客以前也介绍过它:http://www.zhukun.net/blog/article.asp?id=154。其提供的免费空间数据,颇有参考价值。  此次评比

    2026年2月6日
    4
  • SIGPIPE and EPIPE

    SIGPIPE and EPIPESIGPIPEandEPIPESIGPIPE是如下情况引起的(这里只是一个例子)grep”pattern”<reallyhugefile|headgrep有可能会输出上百万行,但是head只需要读取10行就会退出.一旦head将管道的读端关闭,那么grep就会获得SIGPIPE信号,然后被强制退出,使其节约资源.如果不想自己的程序因为这…

    2022年5月7日
    39
  • 机器学习-数据归一化方法(Normalization Method)「建议收藏」

    机器学习-数据归一化方法(Normalization Method)「建议收藏」我的个人微信公众号:Microstrong微信公众号ID:MicrostrongAI公众号介绍:Microstrong(小强)同学主要研究机器学习、深度学习、计算机视觉、智能对话系统相关内容,分享在学习过程中的读书笔记!期待您的关注,欢迎一起学习交流进步!知乎专栏:https://zhuanlan.zhihu.com/Microstrong个人博客:https://blog.csd…

    2022年6月23日
    26
  • JS与或运算「建议收藏」

    JS与或运算「建议收藏」说来惭愧,JS基本的与或运算都没掌握完全,下面说一下与或运算的结果1.与运算(&amp;&amp;)与运算有可能返回五种结果,true、false、null、NaN、undefined运算规则如下1.与运算所有项为true情况下,返回最后一个值,注意是值,并不是trueleta=11;letb=’www’;letc=false;letd=true…

    2022年8月31日
    3
  • 2014—多校训练2(ZCC Loves Codefires)

    2014—多校训练2(ZCC Loves Codefires)

    2021年8月31日
    58
  • 数据库同步有哪些方式?【怎么保障目标和源数据一致性】「建议收藏」

    数据库同步有哪些方式?【怎么保障目标和源数据一致性】「建议收藏」数据库同步有3大难题:1是如何保障目标和源数据一致性;2是异构数据库如何做数据类型转换,导致数据同步失败的原因常常是因为数据类型不一样;3是在数据越实时越有价值的背景下,同步过程中能否做到实时同步。

    2022年10月16日
    4

发表回复

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

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