我们在开发WinForm时,经常会看到partial关键字,比如,我们新建一个Windows Form时,后台代码自动添加如下:

1 public partial class Form1 : Form
2 {
3     public Form1()
4     {
5         InitializeComponent();
6     }
7 }

《C#高级编程》书中说明:partial关键字允许把类、结构或接口放在多个文件中。一般情况下,一个类存储在单个文件中,但有时,多个开发人员需要访问同一个类,或者某种类型的代码生成器生成了一个类的某部分,所以把类放在多个文件中是有益的。

也就是说,我们定义的一个类可以分开几个文件来存储,而各个文件都只是完成这个类的一部分功能。我们在使用这个类时,根本体会不到这个类是由几部分结合在一起共同组成的。比如我分别在两个地方定义了Box类的一部分:

public partial class Box
{
    public Box(string newBoxName)
    {
        boxName = newBoxName;//在这个部分类中,并没有出现boxName局部变量。但是却是可以使用的。
    }
    public void Open()
    {//打开盒子
        Console.WriteLine(boxName + " is opened");
    }
}
public partial class Box
{
    private string boxName = string.Empty;//boxName是在这个部分类中定义的哦
    public void Close()
    {//关闭盒子
        Console.WriteLine(boxName + " is closed");
    }
};

上面的代码等同于下面的Box类:

public class Box
{
    private string boxName = string.Empty;
    public Box(string newBoxName)
    {
        boxName = newBoxName;
    }
    public void Open()
    {//打开盒子
        Console.WriteLine(boxName + " is opened");
    }
    public void Close()
    {//关闭盒子
        Console.WriteLine(boxName + " is closed");
    }
}

书中还有一段:在把部分类编译到类型中时,会合并属性、XML注释、接口、一般类型的参数属性和成员。
    
    所以自己可以去设计一些小Demo去尝试一下。现在回到最开始的问题,为什么新建立的Winows Form的类定义成了一个部分类。我们打开Form1.Designer.cs文件,可以看到,原来Form1的另一部分类是在这个文件中设计的。这个部分类中定义了我们使用的控件、事件委托以及如Dispose方法等。因为这里面的代码都是自动生成的,因此设计成了一个部分类。OK,原来partial如此简单,就到这啦!

转载于:https://www.cnblogs.com/yechanglv/p/6923075.html

《C#高级编程》笔记系列第三弹相关推荐

  1. NDK 高级编程(笔记)

    Android 开发中针对 NDK 的书籍很少,<Pro Android C++ with the NDK>也是出版的比较早的一本书,有些内容可能对现在的开发并不适用.但是书中介绍的内容比 ...

  2. NJ4X源码阅读分析笔记系列(三)—— nj4x-ts深入分析

    NJ4X源码阅读分析笔记系列(三)-- nj4x-ts深入分析 一.系统的工作流程图(模块级) 其工作流程如下(以行情获取为例): 应用端向Application Server发起连接 应用服务器调用 ...

  3. 密码学读书笔记系列(三):《商用密码应用与安全性评估》

    密码学读书笔记系列(三):<商用密码应用与安全性评估> 思考/前言 第1章 密码基础知识 1.1 密码应用概述 1.2 密码应用安全性评估(密评)的基本原理 1.3 密码技术发展 1.4 ...

  4. Unix环境高级编程 笔记

    Unix环境高级编程(第二版)学习笔记 这是一次较长时间的整理,然而跳跃了一些章节和很多知识点,仍然是很不完善很不全面的. 前言 操作系统某些问题 严格意义上,可将操作系统定义为一种软件,它控制计算机 ...

  5. UNIX环境高级编程笔记之文件I/O

    一.总结 在写之前,先唠几句,<UNIX环境高级编程>,简称APUE,这本书简直是本神书,像我这种小白,基本上每看完一章都是"哇"这种很吃惊的表情.其实大概三年前,那会 ...

  6. 深度学习入门笔记系列(三)——感知器模型和 tensorboard 的使用方法

    本系列将分为 8 篇 .今天是第三篇 .主要讲讲感知器模型和 tensorboard 的基本使用方法 . 1. 感知器模型 因为小詹之前写过一篇感知器模型的介绍 ,这里就不赘述了 .有需要巩固的点击如 ...

  7. UNIX环境高级编程笔记

    1.setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &opt, len);   SO_REUSEADDR套接口选项允许为以下四个不同的目的提供服务:   ...

  8. UINX环境高级编程笔记 第3章 文件I/O

    UNIX环境高级编程 第三章 文件I/O 3.1 引言 3.2 文件描述符 3.3 函数open和openat 3.4 函数creat 3.5 函数close 3.6 函数lseek 3.7 函数re ...

  9. Python 高级编程笔记之类别

    目录: 子类化内建类型 访问超类中的方法-super 描述符 & 属性 元编程 主要内容: 1.子类化内建类型 # -*- coding:utf-8 -*-class Folder(list) ...

最新文章

  1. dropbox解决办法
  2. 做产品经理的第1年、第5年和第10年...
  3. 为什么用java开发app_安卓开发为什么选择用Java语言
  4. android二级菜单实现,Android编程实现二级下拉菜单及快速搜索的方法
  5. 动态规划____编辑距离
  6. 职场中几个最忌讳的行为模式。
  7. Zimbra的zmcontral服务无法起来,提示ldap有问题。
  8. 2009年具有中国特色的脑筋急转弯
  9. u盘作为重要的计算机存储介质,U盘是采用FLASH MEMORY作为存储介质的移动存储设备...
  10. 10句Twitter上流行的微博语录
  11. 计算机专业开题报告这么写,有效有用还能过
  12. pop链 php,POP链
  13. oracle 11g下载_oracle11下载
  14. 第二章第三节(上)路径决策算法(动态规划)
  15. 微信QQ打开网页时提示用浏览器打开
  16. Maven 三种archetype说明
  17. Unity初级项目实战:官方宇宙飞机大战游戏(一)
  18. linux在代码中表示什么意思,Linux代码中的unlikely和likely分别是什么意思?
  19. Linux内核机制总结内存管理之内存耗尽杀手(二十四)
  20. 基于三菱Q系列PLC的CC-Link IE Field Basic的伺服总线控制系统硬件组态设置

热门文章

  1. spring boot使用logback实现多环境日志配置
  2. epoll的两种模式
  3. 修改el-table滚动条样式
  4. USB基础与重点梳理—关于USB的问题
  5. [vue] 第一次加载页面时会触发哪几个钩子?
  6. [css] 你对响应式设计的理解是什么?知道它基本的原理是吗?要想兼容低版本的IE怎么做呢?
  7. 工作96:当前页面拿id
  8. 前端学习(2014)vue之电商管理系统电商系统之监听on-remove事件
  9. 前端学习(1812):前端调试之shadow练习
  10. plsql轻量版存储过程和存储函数