zoukankan      html  css  js  c++  java
  • 《C#高级编程》笔记系列第三弹partial关键字

        我们在开发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如此简单,就到这啦!
  • 相关阅读:
    springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用
    springMVC学习总结(二)路径映射和请求方法限定
    springMVC学习总结(一)快速入门
    【学习整理】第九章节 魔法方法,属性和迭代器
    【学习整理】第八章 异常
    【学习整理】第六章 抽象
    【学习整理】第七章 更加抽象
    【学习整理】第五章 条件、循环和其他语句
    transform css3 的使用及理解
    关于垂直居中---未完待续
  • 原文地址:https://www.cnblogs.com/coderzh/p/940444.html
Copyright © 2011-2022 走看看