前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C# partial关键字

C# partial关键字

作者头像
JusterZhu
发布2023-09-06 19:10:39
1380
发布2023-09-06 19:10:39
举报
文章被收录于专栏:JusterZhuJusterZhu

1.概要

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

代码语言:javascript
复制
//...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关键字就能派上用场了。接下来我们来看一段代码直观的感受它的作用。

  • 2.1假设需要实现很多内容
代码语言:javascript
复制
    public interface IPacket
    {
        void Head();

        void Body();

        void Foot();

        //...省略其他定义
    }
  • 2.2定义实现类
代码语言:javascript
复制
    public partial class Packet : IPacket
    {
    }
  • 2.3定义部分类实现
代码语言:javascript
复制
    //Packet-Head.cs
    public partial class Packet : IPacket
    {
        public void Head() 
        {
            Console.WriteLine("Head");
        }
    }
代码语言:javascript
复制
    //Packet-Body.cs
    public partial class Packet : IPacket
    {
        public void Body() 
        {
            Console.WriteLine("Body");
        }
    }
代码语言:javascript
复制
    //Packet-Foot.cs
    public partial class Packet : IPacket
    {
        public void Foot()
        {
            Console.WriteLine("Foot");
        }
    }

ref

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JusterZhu 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.概要
    • 什么是partial关键字?
    • 2.详细内容
    • ref
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档