《C#高级编程》笔记系列第三弹
来源:互联网 发布:李天生sqlserver 编辑:程序博客网 时间:2024/05/23 07:26
我们在开发WinForm时,经常会看到partial关键字,比如,我们新建一个Windows Form时,后台代码自动添加如下:
《C#高级编程》书中说明:partial关键字允许把类、结构或接口放在多个文件中。一般情况下,一个类存储在单个文件中,但有时,多个开发人员需要访问同一个类,或者某种类型的代码生成器生成了一个类的某部分,所以把类放在多个文件中是有益的。
也就是说,我们定义的一个类可以分开几个文件来存储,而各个文件都只是完成这个类的一部分功能。我们在使用这个类时,根本体会不到这个类是由几部分结合在一起共同组成的。比如我分别在两个地方定义了Box类的一部分:
上面的代码等同于下面的Box类:
书中还有一段:在把部分类编译到类型中时,会合并属性、XML注释、接口、一般类型的参数属性和成员。
所以自己可以去设计一些小Demo去尝试一下。现在回到最开始的问题,为什么新建立的Winows Form的类定义成了一个部分类。我们打开Form1.Designer.cs文件,可以看到,原来Form1的另一部分类是在这个文件中设计的。这个部分类中定义了我们使用的控件、事件委托以及如Dispose方法等。因为这里面的代码都是自动生成的,因此设计成了一个部分类。OK,原来partial如此简单,就到这啦!
1 public partial class Form1 : Form
2 {
3 public Form1()
4 {
5 InitializeComponent();
6 }
7 }
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");
}
};
{
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");
}
}
{
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如此简单,就到这啦!
阅读全文
0 0
- 《C#高级编程》笔记系列第三弹
- 《C#高级编程》【第三章】对象和类型 -- 学习笔记
- 《C#高级编程》笔记
- 读c#高级编程笔记
- C#高级编程 学习笔记
- pp看书笔记---C#高级编程第九版 第三章 【类和结构】
- 关于C#高级编程读书笔记系列
- Unix高级环境编程系列笔记
- C#高级编程学习笔记(1)
- C#高级编程学习笔记--------构造函数
- C#-委托(C#高级编程笔记)
- C#高级编程第四版学习笔记
- 《C#高级编程》做的笔记
- C#高级编程笔记之.NET体系结构
- c#高级编程第七版笔记
- c# 高级编程第七版 笔记
- c#高级编程笔记1-net体系结构
- C#高级编程学习笔记(LINQ)
- win7系统自带的录像在哪里 Win7问题步骤记录器教程详解
- DIV+CSS页面布局练习
- 多线程进阶003 之 可利用的并行性案例
- 颜色空间——log空间和线性空间
- 回文链表(解题报告)
- 《C#高级编程》笔记系列第三弹
- x的平方根(二分查找实现)
- Pycharm or Intellij IDEA Cannot load settings from file workspace.xml
- Android 中3d旋转动画Rotate3dAnimation大图旋转失真的问题
- DIV+CSS首页布局练习
- 决策树-剪枝算法(二)
- VBS脚本获取安全标识符SID(Security Identifiers)的方法
- MySQL(四)--SQL_MODE
- 可心耳语-属于网络工程师的人声电台(第一期)