java partial class_C partial 说明

java partial class_C partial 说明1 什么是局部类型 C 2 0 引入了局部类型的概念 局部类型允许我们将一个类 结构或接口分成几个部分 分别实现在几个不同的 cs 文件中 局部类型适用于以下情况 1 类型特别大 不宜放在一个文件中实现 2 一个类型中的一部分代码为自动化工具生成的代码 不宜与我们自己编写的代码混合在一起 3 需要多人合作编写一个类 局部类型是一个纯语言层的编译处理 不影响任何执行机制 事实上 C 编

1. 什么是局部类型?C# 2.0 引入了局部类型的概念。局部类型允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。

局部类型适用于以下情况:

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

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

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

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

public partial class Program

{

static void Main(string[] args)

{

}

}

partial class Program

{

public void Test()

{

}

}

2. 局部类型的限制

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

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

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

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

3. 局部类型的注意点

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

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

4. 局部类型的应用特性

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

[Attribute1, Attribute2(“Hello”)]

partial class Class1{}

[Attribute3, Attribute2(“Exit”)]

partial class Class1{}

相当于

[Attribute1, Attribute2(“Hello”), Attribute3, Attribute2(“Exit”)]

class Class1 {}

注:Attribute2属性允许在类上多次使用。

5. 局部类型上的修饰符

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

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

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

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

6. 局部类型的基类和接口

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

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

partial class Class2: Iinterface1, Iinterface2 {}

partial class Class2: Iinterface3 {}

partial class Class2: Iinterface2 {}

相当于

class Class2: Iinterface1, Iinterface2, Iinterface3 {}

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

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

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

public partial class Customer

{

private int id;

private string name;

private string address;

private List orders;

public Customer() {

}

}

public partial class Customer

{

public void SubmitOrder(Order order) {

orders.Add(order);

}

public bool HasOutstandingOrders() {

return orders.Count > 0;

}

}

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

public class Customer

{

private int id;

private string name;

private string address;

private List orders;

public Customer() {

}

public void SubmitOrder(Order order) {

orders.Add(order);

}

public bool HasOutstandingOrders() {

return orders.Count > 0;

}

}

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

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

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

(0)
上一篇 2026年3月16日 下午7:13
下一篇 2026年3月16日 下午7:14


相关推荐

  • 我想说:即梦AI确实有点儿意思

    我想说:即梦AI确实有点儿意思

    2026年3月12日
    2
  • Git的基本操作

    Git的基本操作Git 什么是 GitGit 是一个开源的分布式版本控制系统 用于敏捷高效地处理任何或小或大的项目 团队协同开发的版本控制工具 Git 与 SVN 区别 1 Git 是分布式的 SVN 是集中式的管理 这是 Git 和其它非分布式的版本控制系统 例如 SVN CVS 等 最核心的区别 2 Git 把内容按元数据方式存储 而 SVN 是按文件 所有的资源控制系统都是把文件的元信息隐藏在一个类似 svn cvs 等的文件夹里 3 Git 分支和 SVN 的分支不同 分支在 SVN 中

    2026年3月19日
    2
  • cpu throttle原理浅析

    cpu throttle原理浅析本文主要介绍 qemu 实现 cputhrottle 的原理

    2026年3月18日
    3
  • 数据归一化及三种方法(python)

    数据归一化及三种方法(python)数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是三种常用的归一化方法:min-max标准化(Min-MaxNormalization)也称为离差标准化,…

    2022年6月23日
    47
  • Java SSM框架简介[通俗易懂]

    Java SSM框架简介[通俗易懂]前言:在学习JavaSSM框架前,我提前学习了反射、注解和MVC模式,因为它们频繁在SSM框架中被用到,建议大家先弄明白了这些基础知识,再学习SSM框架就很简单了。Java进阶知识1:反射机制Java进阶知识2:注解MVC模式的正确理解一、JavaSSM框架的概念JavaSSM框架即指Spring+SpringMVC+MyBatis的简称,框架集由Spring、MyB…

    2022年7月12日
    18
  • 差模信号和共模信号彻底理解_形容理解的不全面

    差模信号和共模信号彻底理解_形容理解的不全面前言AOP英文名为AspectOrientedProgramming,意为面向切面编程,通过预编译方式和运行期间动态代理实现程序功能统一维护的一种技术。AOP是OOP的延续,是Spring框架中的一个重要内容,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。通过以上定义似乎还是不能理解AOP到底是什么,下面通过一个现实中的实例来说明。先看一下传统程序的流程,比如银行系统会有一个取款流程我们可以把方框里的流程

    2022年8月11日
    8

发表回复

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

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