C# partial关键字

1.概要

聊到partial关键字大家可能会有点陌生,在经常写WPF的开发者中一定见过但是没有主动去使用过这个关键字。那么这里我们就来看看这个关键字除了在WPF的window里使用还有哪些地方可以主动去使用它。

//...using namespace
namespace WpfPartialDemo
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }
    }
}
什么是partial关键字?

该关键字可以拆分一个类、一个结构、一个接口或一个方法的定义到两个或更多的文件中是可能的。每个源文件包含类型或方法定义的一部分,编译应用程序时将把所有部分组合起来。

这里主要讲解partial关键字在类、接口中的应用,在以下几种情况下需要拆分类定义:

  • 处理大型项目时,使一个类分布于多个独立文件中可以让多位程序员同时对该类进行处理。

  • 当使用自动生成的源文件时,你可以添加代码而不需要重新创建源文件。Visual Studio 在创建Windows 窗体、Web 服务包装器代码等时会使用这种方法。你可以创建使用这些类的代码,这样就不需要修改由Visual Studio生成的文件。

  • 使用源生成器在类中生成附加功能时。

2.详细内容

使用场景:当我们在编码过程当中发现某一个类的实现需要写大量的代码,且因为业务或设计问题不可分割可预见性的知道该类的实现非常臃肿,那么这个时候partial关键字就能派上用场了。接下来我们来看一段代码直观的感受它的作用。

e676ab9b2289f350f69d87214f338930.png

  • 2.1假设需要实现很多内容

public interface IPacket
    {
        void Head();

        void Body();

        void Foot();

        //...省略其他定义
    }
  • 2.2定义实现类

public partial class Packet : IPacket
    {
    }
  • 2.3定义部分类实现

//Packet-Head.cs
    public partial class Packet : IPacket
    {
        public void Head() 
        {
            Console.WriteLine("Head");
        }
    }
//Packet-Body.cs
    public partial class Packet : IPacket
    {
        public void Body() 
        {
            Console.WriteLine("Body");
        }
    }
//Packet-Foot.cs
    public partial class Packet : IPacket
    {
        public void Foot()
        {
            Console.WriteLine("Foot");
        }
    }

6387360b160c0cfef1e9b405215f0939.png

ref

https://learn.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/partial-classes-and-methods

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值