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。
(5)如果一个部分类使用了 static修饰符,那么整个类都将被视为静态类。


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

(1) 一个类型的各个部分上指定的基类必须一致。某个部分可以不指定基类,但如果指定,则必须相同。
(2) 局部类型上的接口具有“累加”效应。

partial class Class2: Iinterface1, Iinterface2 {}
partial class Class2: Iinterface3 {}
partial class Class2: Iinterface2 {}

相当于
class Class2: Iinterface1, Iinterface2, Iinterface3 {}

转载于:https://www.cnblogs.com/taidi/p/5852590.html

C#里partial关键字的作用(转摘)相关推荐

  1. [partial] C#里partial关键字的作用

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

  2. C#里partial关键字的作用

    1. 什么是局部类型? C# 2.0 引入了局部类型的概念.局部类型允许我们将一个类.结构或接口分成几个部分,分别实现在几个不同的.cs文件中. 局部类型适用于以下情况: (1) 类型特别大,不宜放在 ...

  3. C#玩转指针(二):预处理器、using、partial关键字与region的妙用

    欲练神功,引刀自宫.为了避免内存管理的烦恼,Java咔嚓一下,把指针砍掉了.当年.Net也追随潮流,咔嚓了一下,化名小桂子,登堂入室进了皇宫.康熙往下面一抓:咦?还在?--原来是假太监韦小宝. 打开u ...

  4. 、简述global关键字的作用_详解static inline关键字

    详解static inline关键字 本文章为知乎用户 @徐yang哟 原创,禁止抄袭! 灵感来源 在查stm32的LL库部分函数的API时,有时会查到这种函数: __STATIC_INLINE vo ...

  5. 【Java学习笔记之一】java关键字及作用

    Java关键字及其作用 一. 总览: 1 访问控制 2 private protected public 3 4 类,方法和变量修饰符 5 abstract class extends final i ...

  6. 、简述global关键字的作用_在C#编程中global关键字的作用及其用法

    在C#编程中,global 是 C# 2.0 中新增的关键字,理论上说,如果代码写得好的话,根本不需要用到它.今天就为大家展示下global关键字的作用及其用法,希望对大家学习C#编程有所帮助. 假设 ...

  7. php 中的作用是什么,php中static关键字的作用是什么

    php中static关键字的作用是:1.放在函数内部修饰变量,函数执行完后变量值仍然保存:2.放在类中修饰属性或方法,如果修饰的是类的属性,则保留值:3.放在类的方法中修饰变量:4.修饰全局作用域的变 ...

  8. Java对象表示方式1:序列化、反序列化和 transient 关键字的作用

    前言快速到底 平时我们接触到的 Java 对象全都是在内存中的对象(它像磁盘中的一个个文件那样实实在在的存在着),所以它是无法进行 IO 操作或者网络通信的,因为在进行 IO 操作或者网络通信的时候, ...

  9. 一文搞懂Volatile关键字的作用

    前言 Volatile关键字的作用主要有如下两个: 1.线程的可见性:当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值. 2. 顺序一致性:禁止指令重排序. 一.线程可见性 我们先通过一个 ...

最新文章

  1. threading多线程模块
  2. the code place where the binding is converted to final value displayed in ui
  3. 影响个人计算机系统功能的因素,影响个人计算机系统功能的因素除了系统使用哪种位的微处理器外,还有CPU的时钟频率、CPU主内存容量、CPU所能提供的指令集。...
  4. Yarn 资源调度框架
  5. Tomcat启动时项目重复加载,导致资源初始化两次的问题
  6. 一座在云端的工厂是什么样的?
  7. 70英寸巨屏!小米首款Redmi红米电视来了 售价狠!
  8. win10 iot core java_Windows 10 IoT Core开发环境
  9. 我扒了 6730 个微信用户数据,得出了这些结论......
  10. ES6深入浅出-1 新版变量声明:let 和 const-1.视频 概述
  11. mysql connectors层_mysql底层工作原理
  12. matlab单回路控制系统设计,实验二单回路控制系统的建模与仿真 .doc
  13. c语言开发环境win10,老司机解决win10系统搭建C语言开发环境的操作技巧
  14. 青岛大学苏晓泉组-微生物组16S扩增子功能校正算法Meta-Apo
  15. django自动生成问卷表的软件的设计与实现毕业设计源码291138
  16. 日订单超1000万,美团外卖是如何设计广告推送系统的?
  17. Android专利战对大陆手机产业的影响
  18. PMP考试要学多久,考试难吗?
  19. verilog 实现32位加法器(超前进位)
  20. 三极管专题:PNP和NPN 三极管恒流电路分析

热门文章

  1. 实现samba可写不可删除
  2. An Implementation of Double-Array Trie
  3. 机器学习资料推荐 URL
  4. C++基本语法( Visual Studio 2015 )【个人 见解】
  5. YunTable开发日记(3) – BigTable的数据模型和调用接口 (转载)
  6. laravel 5.5 整合 jwt 报错Method Tymon\JWTAuth\Commands\JWTGenerateCommand::handle() does not exist解决...
  7. MySQL 性能优化及常用命令
  8. Linux下搭建SVN+版本冲突
  9. 基于.NET的图表控件解决方案
  10. XenApp 6 license导入报错的终极解决方案