《C#高级编程》笔记系列第三弹
我们在开发WinForm时,经常会看到partial关键字,比如,我们新建一个Windows Form时,后台代码自动添加如下:
2 {
3 public Form1()
4 {
5 InitializeComponent();
6 }
7 }
《C#高级编程》书中说明:partial关键字允许把类、结构或接口放在多个文件中。一般情况下,一个类存储在单个文件中,但有时,多个开发人员需要访问同一个类,或者某种类型的代码生成器生成了一个类的某部分,所以把类放在多个文件中是有益的。
也就是说,我们定义的一个类可以分开几个文件来存储,而各个文件都只是完成这个类的一部分功能。我们在使用这个类时,根本体会不到这个类是由几部分结合在一起共同组成的。比如我分别在两个地方定义了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类:
{
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#高级编程》笔记系列第三弹相关推荐
- NDK 高级编程(笔记)
Android 开发中针对 NDK 的书籍很少,<Pro Android C++ with the NDK>也是出版的比较早的一本书,有些内容可能对现在的开发并不适用.但是书中介绍的内容比 ...
- NJ4X源码阅读分析笔记系列(三)—— nj4x-ts深入分析
NJ4X源码阅读分析笔记系列(三)-- nj4x-ts深入分析 一.系统的工作流程图(模块级) 其工作流程如下(以行情获取为例): 应用端向Application Server发起连接 应用服务器调用 ...
- 密码学读书笔记系列(三):《商用密码应用与安全性评估》
密码学读书笔记系列(三):<商用密码应用与安全性评估> 思考/前言 第1章 密码基础知识 1.1 密码应用概述 1.2 密码应用安全性评估(密评)的基本原理 1.3 密码技术发展 1.4 ...
- Unix环境高级编程 笔记
Unix环境高级编程(第二版)学习笔记 这是一次较长时间的整理,然而跳跃了一些章节和很多知识点,仍然是很不完善很不全面的. 前言 操作系统某些问题 严格意义上,可将操作系统定义为一种软件,它控制计算机 ...
- UNIX环境高级编程笔记之文件I/O
一.总结 在写之前,先唠几句,<UNIX环境高级编程>,简称APUE,这本书简直是本神书,像我这种小白,基本上每看完一章都是"哇"这种很吃惊的表情.其实大概三年前,那会 ...
- 深度学习入门笔记系列(三)——感知器模型和 tensorboard 的使用方法
本系列将分为 8 篇 .今天是第三篇 .主要讲讲感知器模型和 tensorboard 的基本使用方法 . 1. 感知器模型 因为小詹之前写过一篇感知器模型的介绍 ,这里就不赘述了 .有需要巩固的点击如 ...
- UNIX环境高级编程笔记
1.setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &opt, len); SO_REUSEADDR套接口选项允许为以下四个不同的目的提供服务: ...
- 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 ...
- Python 高级编程笔记之类别
目录: 子类化内建类型 访问超类中的方法-super 描述符 & 属性 元编程 主要内容: 1.子类化内建类型 # -*- coding:utf-8 -*-class Folder(list) ...
最新文章
- dropbox解决办法
- 做产品经理的第1年、第5年和第10年...
- 为什么用java开发app_安卓开发为什么选择用Java语言
- android二级菜单实现,Android编程实现二级下拉菜单及快速搜索的方法
- 动态规划____编辑距离
- 职场中几个最忌讳的行为模式。
- Zimbra的zmcontral服务无法起来,提示ldap有问题。
- 2009年具有中国特色的脑筋急转弯
- u盘作为重要的计算机存储介质,U盘是采用FLASH MEMORY作为存储介质的移动存储设备...
- 10句Twitter上流行的微博语录
- 计算机专业开题报告这么写,有效有用还能过
- pop链 php,POP链
- oracle 11g下载_oracle11下载
- 第二章第三节(上)路径决策算法(动态规划)
- 微信QQ打开网页时提示用浏览器打开
- Maven 三种archetype说明
- Unity初级项目实战:官方宇宙飞机大战游戏(一)
- linux在代码中表示什么意思,Linux代码中的unlikely和likely分别是什么意思?
- Linux内核机制总结内存管理之内存耗尽杀手(二十四)
- 基于三菱Q系列PLC的CC-Link IE Field Basic的伺服总线控制系统硬件组态设置