zoukankan      html  css  js  c++  java
  • C# 分部类和分部方法

    分部类(Partial Class)在C#2.0引入,分部方法(Partial Method)在C#3.0引入,这两个语法特性都具有相同的特性:将类(或)方法的代码分散在多个地方。

    1.分部类的特性和应用

    1.1分部类的定义

    在定义一个类时,加上partial关键字,此类即成为分部类。

    分部类允许将一个类的代码分散于一个以上的源代码文件中。

    Person.cs代码如下

     1 namespace PartialClassDemo1
     2 {
     3     public partial class Person
     4     {
     5         private int age;
     6         Person(int age, string name)
     7         {
     8             this.age = age;
     9             this.name = name;
    10         }
    11         public int Age
    12         {
    13             get
    14             {
    15                 return age;
    16             }
    17             set
    18             {
    19                 if (age < 0 || age > 120)
    20                     Console.WriteLine("年龄非法");
    21                 else
    22                     this.age = Age;
    23             }
    24         }
    25         static void Main(string[] args)
    26         {
    27             Person p = new Person(19,"张三");
    28             Console.WriteLine(p.Age);
    29             Console.ReadKey();
    30         }
    31     }
    32 }

    Person2.cs代码如下

    namespace PartialClassDemo1
    {
        public partial class Person
        {
            private string name;
        }
    }

    使用分部类时,需要注意一下原则:

    (1)所有的需要“合并”的类必须都用partial关键字声明。

    (2)所有的需要“合并”的类必须位于同一个项目中。

    2.为什么要引入分部类

    分部类主要用于隔离来源不同,功能不同或者类型不同的源代码

     另外分布特性还可以用具结构和接口

    2.分布方法的特性和应用

    分布方法允许将方法声明与方法实现代码分布于不同的文件中。与分部类类似,使用partial关键字定义分部方法。

            partial void show(string str);
            partial void show(string str)
            {
                Console.WriteLine(str+"再见");
            }

    分布方法不能具有访问修饰符或virtual、abstract、override new sealed 或者extern修饰符

    partial修饰符只能出现在紧靠class struct interface void前面的位置

     当分部方法没有实现代码时,C#编译器会在编译时删除其调用语句。

    现在我们知道了分部方法有这种特性,但是它有什么用呢?

    使用分部方法允许我们在一个普通方法中插入一个方法占位符,从而为编写可随时添加功能的方法提供支持。

    分部方法不能有多个实现。

  • 相关阅读:
    剑指offer——最小的K个数和数组中第K大的元素
    Leetcode刷题指南链接整理
    160. Intersection of Two Linked Lists
    100. Same Tree
    92. Reverse Linked List II
    94. Binary Tree Inorder Traversal
    79. Word Search
    78,90,Subsets,46,47,Permutations,39,40 DFS 大合集
    0x16 Tire之最大的异或对
    0x16 Tire
  • 原文地址:https://www.cnblogs.com/malinkang/p/2609168.html
Copyright © 2011-2022 走看看