侧边栏壁纸
博主头像
Komi博主等级

WizMan Komi

  • 累计撰写 30 篇文章
  • 累计创建 43 个标签
  • 累计收到 3 条评论

目 录CONTENT

文章目录

C# partial关键字的解释以及使用场景

Komi
2022-03-31 / 0 评论 / 0 点赞 / 180 阅读 / 1,317 字
温馨提示:
内容仅供参考,实际使用需根据自身条件进行调整与删改

什么是partial关键字

A partial class is a special feature of C#. It provides a special ability to implement the functionality of a single class into multiple files and all these files are combined into a single class file when the application is compiled. A partial class is created by using a partial keyword

partial字面意思即为部分的 这里指的是将C#中的类或者接口或者结构亦或是某个方法进行拆分并定义在不同的文件中 最后在程序编译的时候会集中在一起合成一个

部分类

public partial class Employee
{
    public void DoWork()
    {
    }
}

public partial class Employee
{
    public void toWorkStation()
    {
    }

    public void goBackHome()
    {
    }
}

partial类的一些注意点:

  1. 并且需要保证类/接口/结构中的所有访问性必须为相同的,如均为 public private
  2. 当前的partial类/接口/结构若被定义为abstract、sealed则所有的类均为该类型
  3. 各个部分可以指定不同的基接口,但最终合并的类将实现所有当前类声明列出的全部接口
  4. partial是可以对类进行嵌套使用的 例如
partial class ClassWithNestedClass
{
    partial class NestedClass { }
}

partial class ClassWithNestedClass
{
    partial class NestedClass { }
}

5.partial类/接口/结构必须在同一个命名空间下才生效 反之则不成立 而是两个不同类型的类/接口/结构 参考这里

部分方法

partial方法的一些注意点:

  1. 仅限在上述的部分类中可以实现部分方法
  2. 没有任何可访问性修饰符 默认隐性地为private
  3. 返回类型一定是void
  4. 可以有ref类型的参数 但是不能有任何out类型的输出参数
  5. 没有以下任何修饰符:virtual、override、sealed、new 或 extern
  6. 可以被static、unsafe修饰符被修饰
  7. 方法可以先被定义 之后再被当前partial类或是其他地方的partial类进行具体实现 例如:
class Program  
   {  
       static void Main(string[] args)  
       {  
           ClassA cls = new ClassA();  
           cls.SetSalary();  
       }  
   }  
   public partial class ClassA  
   {  
       partial void SetData();  
   }  
  
   public partial class ClassA  
   {  
       public void SetSalary()  
       {  
           SetData();  
           // Perform other functionality here  
       }  
       partial void SetData()  
       {  
           Console.Write("This is partial method.");  
           Console.ReadKey();  
       }  
   }
0

评论区