C#---第二十: partial修饰类的特性及应用

0.知识背景

局部类型适用于以下情况:

  • 类型特别大,不宜放在一个文件中实现。
  • 一个类型中的一部分代码为自动化工具生成的代码,不宜与我们自己编写的代码混合在一起。
  • 需要多人合作编写一个类

局部类型的限制:

  • 局部类型只适用于类、接口、结构,不支持委托和枚举。
  • 同一个类型的各个部分必须都有修饰符 partial。
  • 使用局部类型时,一个类型的各个部分必须位于相同的命名空间中。
  • 一个类型的各个部分必须被同时编译。

局部类型的注意点:

  • 关键字partial是一个上下文关键字,只有和 class、struct、interface 放在一起时才有关键字的含义。因此partial的引入不会影响现有代码中名称为partial的变量。
  • 局部类型的各个部分一般是分开放在几个不同的.cs文件中,但C#编译器允许我们将他们放在同一文件中。


1. 代码结构介绍 & 校验的功能

  • 4个不同目录下面的partial 类,校验是否可以都被调用到不同类中独有的方法(Fun() 、Fun2()、Fun3()、Fun5() )
  • 在一个partial 类(SmallClass)中定义变量int,校验其他类中是否可以调用改变量
    在这里插入图片描述


2.代码部分

AnotherClass.cs


using System.Reflection;namespace ConsoleDeomAlien.MultiClass
{public partial class NormalClass{private const string name3 = "alien3";public void Fun3(){string methodName = MethodBase.GetCurrentMethod().Name;Console.WriteLine($"{className}----{methodName}-----{name3}\n");}}
}


NormalClass.cs


using System.Reflection;namespace ConsoleDeomAlien.MultiClass
{public partial class NormalClass{private const string name = "alien";string className = MethodBase.GetCurrentMethod().ReflectedType.Name;public void Fun(){string methodName = MethodBase.GetCurrentMethod().Name;Console.WriteLine($"{className}----{methodName}-----{name}\n");Console.WriteLine($"{className}----{methodName}-----{age}\n");}}
}


SpecialClass.cs


using System.Reflection;namespace ConsoleDeomAlien.MultiClass
{public partial class NormalClass{private const string name2 = "alien2";public void Fun2(){string methodName = MethodBase.GetCurrentMethod().Name;Console.WriteLine($"{className}----{methodName}-----{name2}\n");}}
}


SmallClass.cs


using System.Reflection;namespace ConsoleDeomAlien.MultiClass
{public partial class NormalClass{private const string name5 = "alien5";public int age = 18;public void Fun5(){string methodName = MethodBase.GetCurrentMethod().Name;Console.WriteLine($"{className}----{methodName}-----{name5}\n");}}
}


MainClass.cs


using ConsoleDeomAlien.MultiClass;namespace ConsoleDeomAlien
{public class MainMethod{public static void Main(){var cc = new NormalClass();cc.Fun();cc.Fun2();cc.Fun3();cc.Fun5();cc.age = 22;Console.WriteLine($"Main ---------{cc.age}");Console.ReadKey();}}
}


3.讲解部分

  • 每个partial 文件可以共享内容、共同组成一个类的前提是,命名空间、类名都一摸一样,如下所示。

namespace ConsoleDeomAlien.MultiClass
{public partial class NormalClass{}
}
  • 只要上面条件符合、发现文件在不同路径下,都可以实现共享机制。

  • 既然这个特殊的大类NormalClass需要多个文件共同维护,那每个文件肯定包含一些独有的方法。但是,只要初始化一次这个类,每个文件中独有的方法都可以被调用到
    在这里插入图片描述

  • 在SmallClass.cs 文件中定义了age 这个变量,但在NormalClass.cs文件中,也同样调用到了这个变量age。且在main方法中修改这个变量之后,这个值也变化了。

  • 每个类中定义的私有变量(private const string name)可供该类中的方法单独使用,方便与其他文件中的变量隔离。这样调用不同的方法,可以获取不同的值了。
    在这里插入图片描述

  • 在NormalClass.cs中定义的变量(string className),可以获取到调用该方法对应的class 名称.且该变量可共其他的partial 文件访问到。


string className = MethodBase.GetCurrentMethod().ReflectedType.Name;
  • 在每个方法中定义的局部变量(methodName),可以获取到该方法的名称,且这种方法名的获取方式,只能在方法中获取,在方法外不能获取到。

string methodName = MethodBase.GetCurrentMethod().Name;


4.最终输出内容

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1621711.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

闲人闲谈PS之十九——PS模块的未来

惯例闲话:约莫5年前,闲人曾经对自己职业专业产生过一丝疑虑,SAP实施人们都说五大模块(SD/PP/MM/FI/CO),PS模块的存在感如同天边的浮云,也就国网、中石油、国能等这些国字头企业里才有PS的存在&a…

价值240万的photoshop中文教程

PS抠图方法 一、魔术棒法——最直观的方法  适用范围:图像和背景色色差明显,背景色单一,图像边界清晰。  方法意图:通过删除背景色来获取图像。  方法缺陷:对散乱的毛发没有用。  使用方法:1、点击…

PS教程(个人精心整理,你也可以成为PS高手)

1.用钢笔在背部勾勒一个翅膀的外形, 2.在当前的工作路径转换成路径1,双击工作路径即可。 3.将路径转换成选区(Alt回车),复制一层,羽化3像素, 4.填充白色,选择合适的强度使用涂抹工具…

meta-transfomer

导读 设计一个统一的网络来处理各种模态(例如自然语言、2D图像、3D点云、音频、视频、时间序列和表格数据)是一项极具挑战性的工作。 本文提出了一个名为Meta-Transformer的框架,利用一个冻结的编码器在没有任何成对多模态训练数据的情况下…

基于寄生捕食算法优化的BP神经网络(预测应用) - 附代码

基于寄生捕食算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于寄生捕食算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.寄生捕食优化BP神经网络2.1 BP神经网络参数设置2.2 寄生捕食算法应用 4.测试结果:5…

大连海事大学

目录 分数201920202021初试专业课复试总成绩资料复习规划一轮二轮三轮四轮英语政治数学分数 2019 2020

京东接班人徐雷

来源 :商业史记 文/ 张小迁 2021年9月6日,京东零售CEO徐雷晋升为拥有32万员工的京东集团总裁。至此,中国三大电商平台阿里巴巴、京东和拼多多,创始人都开始隐身到幕后,进入垂帘听政模式,前台则…

北大双杰——孔庆东和余杰

孔庆东的新浪博客 http://blog.sina.com.cn/kongqd 北大双杰——孔庆东和余杰的书不错,孔的幽默机智,可以让你笑坏肚子同时能明白点道理;余算是个愤青,批判家,思想很有意思! ----------------------------…

Nature封面论文创意被剽窃?UC圣迭戈付向东实名举报中科院研究员抄袭

伊瓢 发自 凹非寺量子位 报道 | 公众号 QbitAI 6月25日的Nature封面,刚发布不到10天,还热乎着呢,居然发现已经被抄袭了? 抄袭者还发了另一大顶级刊物Cell? 今天,一封流传的举报信突然引起了轩然大波&#x…

读论文《大气压等离子体电离波沿介质管传输特性研究》

文章目录 一、研究背景和意义二、研究目的与内容三、电离波概述3.1 电离波与传统的流注放电3.2 电离波传输速度的计算方法 四、放电参数对电离波传输特性的影响4.1 施加电压与电压波形对电离波传输的影响4.1.1 交流高压对电离波的影响4.1.2 脉冲高压对电离波的影响 4.2 气体流量…

电商格局谋定重整-万祥军:李玉庭对话中国经济和信息化

电商格局谋定重整-万祥军:李玉庭对话中国经济和信息化 (BT传媒《商业价值》杂志9月刊封面文章,记者郭娟)中国经济和信息化网 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 经信研究 国研智库 国情讲坛 万赢信采编&#xff…

量子技术在中国「电子政务外网」的应用 | 报告荐读

来源:《信息安全研究》 导读 | 随着量子技术不断取得突破,特别是以美国、欧洲为代表的西方强国量子技术的不断发展,使得我国电子政务外网原有经典密码保障措施受到严重威胁,必须在实际威胁发生前防患于未然;利用量子保…

青岛理工大学 研究生 吴斌

1997年6月出生,山东泰安新泰人,高中:新泰一中,本科毕业于潍坊理工学院(前历山学院),目前,正在青岛理工大学攻读硕士学位。 发表SCI文章两篇,研究方向为深度学习在遥感影像的应用。 …

百度量子披荆斩浪,与如流共赴效率之舞

必须得承认,作为普通人,我对学霸尤其是科学家们的一切都充满好奇。 既往印象中,科学家们总是深居简出,对自己的生活也讳莫如深,偶尔出现在公开场合,也是像《生活大爆炸》中的谢耳朵那样满口术语&#xff0c…

薛其坤、向涛两位院士,担任这家研究院联合院长

来源:中国科学报 编辑:双一流高校 2月25日,北京量子信息科学研究院(简称“北京量子院”)第一届理事会第五次会议召开,审议并通过了更换理事、提名联合院长、科研副院长等议题。 据了解,南方科技…

【大咖论道】周志华,唐杰教授等专家,站在 2022,展望大模型的未来

28 日,阿里巴巴达摩院发布 2022 十大科技趋势。其中,“大模型参数竞赛进入冷静期,大小模型将在云边端协同进化”的断言,在 AI 圈备受关注。 2021 是大模型爆发之年,我们见证了大模型的惊艳,但也了解了目前大…

量子力学历史与理论

量子力学历史与理论 提到量子力学,很多人的第一反应是微观、不连续、不确定,然后就是玄乎、奇怪、诡异,乃至恐怖。 有这样的想法并不奇怪,毕竟,它跟经典物理的确不太一样,大家也乐于相信玻尔说的&#xff1…

2个月7登顶刊!郭光灿团队实现硅自旋量子比特的国际最快调控

光子盒研究院出品 硅基半导体自旋量子比特以其长量子退相干时间和高操控保真度,以及其与现代半导体工艺技术兼容的高可扩展性,成为实现量子计算机研制的重要候选者之一。近年来,由于硅量子点的优越性,基于硅量子点的研究取得了实质…

读京东技术解密,感桑田沧海变迁

前言:读完《京东技术解密》的试读章节,情不自禁叹了口气,不仅仅感叹文章带给我的震撼,更感叹我们的团队在未来能取得怎样的成就。书中提及的京东技术架构以及成长史,足够的牛气,足够的辉煌,然而…

请接收 | 京东探索研究院陶大程院长的一封信

技术为帆 不负韶华 京东探索研究院陶大程院长的一封信 年轻的朋友们: 感谢大家对京东探索研究院(JD Explore Academy)的关注与支持!感谢大家对科研工作的殷切期待与信心! 今天我们正飞速进入一个由人工智能…