首页 > 编程语言 >C#学习笔记 -- 分部类、分部方法

C#学习笔记 -- 分部类、分部方法

时间:2023-05-21 18:34:23浏览次数:33  
标签:部类 partial C# 方法 void -- 分部 声明

1、分部类和分部类型

类的声明可以分割成几个分部类的声明

  • 每个分部类的声明都有一些成员的声明

  • 类的分部类声明可以在同一文件中也可以在不同文件中

  • 每个分部类声明必须被标注为patial class

partial class MyPartClass //类名称与下部分相同
{
    member1 delaration
    member2 delaration
}
partial class MyPartClass //类名称与上部分相同
{
    member3 delaration
    member4 delaration
}

如下代码块文件, 可以被分割成两个文件

class MyPartClass
{
    public void OutPut1(int inVal) {...}
    public void OutPut2(int inVal) {...}
}
partial class MyPartClass
{
    public void OutPut1(int inVal) {...}
}
partial class MyPartClass
{
    public void OutPut2(int inVal) {...}
}
注意
  1. 类型修饰符partial不是关键字, 所以在其他上下文中, 可以在程序中把它用作标识符

  2. 但是直接用在关键字class、struct或interface之前, 它表示分部类型

VS为标准Windows程序模板使用了这个特性, 如果从标准模板创建ASP.NET项目 WPF项目, 模板会为每一个Web页面、表单或窗体创建两个类文件.对于ASP.NET后WindowsForms

  • 一个文件中的分部类包括由VS生成的代码, 声明类页面上的组件, 你不应该修改这个文件中的部分类, 因为在修改页面组件时, VisualStudio会重新生成他

  • 另一个文件包含的分部类可用于实现页面或表单组件的外观和行为

除了分部类, 还可以创建

  • 局部结构

  • 局部接口

2、分部方法

分部方法是声明在分部类中不同部分的方法, 分部方法不同部分在分部类的不同部分中, 也可以声明在同一个部分中, 分部方法的两个部分都如下

  • 定义分部方法声明

    • 给出签名和返回类型

    • 声明的实现部分只是一个分号

  • 实现分部方法声明

    • 给出签名和返回类型

    • 以普通的语句块形式实现

注意
  1. 定义声明和实现声明的签名和返回类型必须匹配, 签名和返回类型都有如下特征

    • 返回类型必须是void

    • 签名不能包括访问修饰符, 这使得分部方法是隐式私有的

    • 参数列表不能包含out参数

    • 定义声明和实现声明中都必须包含上下文关键字partial, 并且直接放在关键字void之前

  2. 可以有定义部分而没有实现部分, 在这种情况下, 编译器把方法的声明以及方法内部任何对方法的调用都移除, 不能只有分部方法的实现部分而没有定义部分

例子
  • PrintSum声明在分部类不同部分, 定义声明在第一个部分中, 实现声明在第二个部分, 实现部分打印出两个整型参数的和

  • 因为分部方法是隐式私有的, 所以PrintSum不能从类的外部调用, 方法Add是调用PrintSum的公有方法

  • Main创建类的一个对象, 并调用它的公有方法, 公有方法调用PrintSum, 打印出输入参数的和

//分部类, 定义分部方法
partial class Program720
{
    //定义分部方法, 分部方法返回值必须为空
    partial void PrintSum(int x, int y);
​
    //使用分部方法
    public void Add(int x, int y)
    {
        PrintSum(x, y);
    }
}
​
//分部类, 实现分部方法
partial class Program720
{
    //实现分部方法, 分部方法返回值必须为空
    partial void PrintSum(int x, int y)
    {
        Console.WriteLine($"分部方法PrintSum实现部分, 结果为:{x + y}");
    }
}
static void Main(string[] args)
{
    Program720 program720 = new Program720();
    program720.Add(1, 2);
}

标签:部类,partial,C#,方法,void,--,分部,声明
From: https://www.cnblogs.com/phonk/p/17418962.html

相关文章

  • Day 41 41.1 Python中json模块的loadloads方法实战及参数详解
    Python中json模块的load/loads方法实战及参数详解【一】loads方法与load方法的异同在Python中json是一个非常常用的模块,这个主要有4个方法:json.dumpsjson.dumpjson.loadsjson.load这里主要分析讲解一下json的loads和load方法。这两个方法中都是把其他类型......
  • C语言--接续符
    编译器会将反斜杠剔除,跟在反斜杠后面字符自动接续到前一行在接续单词时,反斜杠之后不能有空格,反斜杠的下一行之前也不能有空格接续符适合在定义宏代码块时使用\n回车换行\t横向跳到下一制表位置\v竖向跳格\b退格\r回车\f走纸换页\\反斜杠符“\”......
  • Day 41 41.3 URL 解码 编码详解
    【一】URL解码/编码详解当URL路径或者查询参数中,带有中文或者特殊字符的时候,就需要对URL进行编码(采用十六进制编码格式)。URL编码的原则是使用安全字符去表示那些不安全的字符。安全字符,指的是没有特殊用途或者特殊意义的字符。【二】URL基本组成URL是由一些简单的......
  • Day 41 41.2 Python中json模块之dumps参数详解
    Python的JSON用法之dumps的各种参数用法(详细)JSON是用于存储和交换数据的语法。JSON(JavaScriptObjectNotation)最初是用JavaScript对象表示法编写的文本,但随后成为了一种常见格式,被包括Python在内的众多语言采用。在使用json方法的时候要记住先引进这个库importjson......
  • MySQL学习基础篇Day6
    5.多表查询我们之前在讲解SQL语句的时候,讲解了DQL语句,也就是数据查询语句,但是之前讲解的查询都是单表查询,而本章节我们要学习的则是多表查询操作,主要从以下几个方面进行讲解。5.1多表关系项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表......
  • mycat linux 搭建,分表分库,增长长插入
    下载Mycat-server-1.6.7.1-release-20200209222254-linux.tar下载地址:Mycat-server-1.6.7.1-release-20200209222254-linux.tar解压进入bin启动./mycatstart启动./mycatstop停止./mycatrestart重启mycat分库分表server.xml<?xmlversion="1.0"encoding="UTF-8&qu......
  • 【如何实现tinySTL】实现小型的vector string 将 string 放入vector中
    语法细节类内的静态(static)成员在类外定义的时候不加statictypename的作用1.一种是在声明模板类、模板函数的参数的时候2.还有一种是在取别名的时候std::enable_if的几种用法定义cincoutendl都是什么endl是一个函数参数是basic_ostreamcincout是两个对象【在指定的地址构造......
  • Android原生工程配置导入uni-app项目-混合开发
    Android原生工程配置官网配网地址:https://nativesupport.dcloud.net.cn/AppDocs/usesdk/androidApp离线SDK下载我这边给大家放在资料里面了新建Android项目Hello-H5注意:Android项目目录不要有中文拷贝[email protected]、lib.5plus.base-release.aar、mi......
  • 大师罗莊自己整理的绘画色彩笔记
     这些都是我上绘画课整理出来的笔记  鄙人抱着以“画”会友,给大家分享经验,对应美术入门和低年级色彩课程  老师语录: 1、你们不要画个东西八分像九分像就可以了,要准确无误。  2、我上次参观的前苏联ABC建筑学院,说是说叫建筑学院,与美术不沾边。  他们要上6年课程,前......
  • oracle中SCN详细解析
    在Oracle数据库中,SCN表示数据库中状态变化的时间点,是一个连续唯一的数字标识符。SCN的类型比较多,本文将会详细介绍控制文件中的SCN、检查点(SCNCheckpoint)、数据文件的起始SCN和终止SCN、归档日志的SCN以及在线日志的SCN,同时描述这些不同类型的SCN之间的关系。控制文件中的SCN在O......