C#方法(1)

本文介绍了C#编程中的分布方法、扩展方法和匿名方法的概念。分布方法利用partial关键字允许类和方法分布在多个文件中,方便代码组织和多人协作。扩展方法则提供了向已有类型添加功能而不改变其原有结构的方式,它们是静态方法,但可以通过实例调用。匿名方法则涉及没有名称的委托,常用于简短的回调函数。理解这些方法对于提升C#编程效率和代码质量至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我们要清楚方法是一个什么样的东西,方法是有指定功能的代码块。说起方法方法是有指定功能的代码块。说起方法就得说一下方法的签名:修饰符、返回值类型、方法参数。在定义方法时的参数叫“形式参数(形参)”,在调用方法时的参数叫“实际参数(实参)”。
这些基本了解之后,下面开始谈几类方法:分布、扩展、匿名和普通方法。
一 分布方法:
要说分布方法要先说分布类:在Visual Studio中创建一个Windows窗体应用程序,打开窗体Form1的代码部分和Form1.Designer.cs 文件,如图
在这里插入图片描述
Form1类的修饰符有个partial关键字,没错,partial关键字就是表示此类或此方法为分布类或分布方法的,上面的例子把分布类或分布方法的好处已经体现了:可以让一个类分布在多个文件,这样就可以让多个程序员编写了,也可以让一个类的几个功能块分布在多个文件中。
注意:
1.partial关键字只能修饰类、结构或方法。分布方法只能存在于分布类或分布结构中。
2.partial是Visual Studio的关键字,不是C#语法的关键字。在最终编译的时候,分布类会统一编译成一个类,如果分布方法未提供该实现,则会在编译时移除方法以及对方法的所有调用。
3.各个部分必须具有相同的可访问性,如 public、private 等。
4.如果将任意部分声明为抽象的,则整个类型都被视为抽象的,如果将任意部分声明为密封的,则整个类型都被视为密封的,如果任意部分声明基类型,则整个类型都将继承该类。指定基类的所有部分必须一致,但忽略基类的部分仍继承该基类型,各个部分可以指定不同的基接口,最终类型将实现所有分部声明所列出的全部接口。
5.分部方法声明必须以上下文关键字 partial 开头,并且方法必须返回 void。
6.分部方法可以有 ref 参数,但不能有 out 参数。
7.分部方法为隐式 private 方法,因此不能为 virtual 方法。
8.分部方法不能为 extern 方法,因为主体的存在确定了方法是在定义还是在实现。
9.分部方法可以有 static 和 unsafe 修饰符。
10.分部方法可以为泛型的。约束将放在定义分部方法声明上,但也可以选择重复放在实现声明上。参数和类型参数名称在实现声明和定义声明中不必相同。
11.不能将委托转换为分部方法。
二 扩展方法:
扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。
扩展方法必须是静态的,第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。举例说明:
在这里插入图片描述
细心的话会有一个疑问:IamExt是静态方法,而在调用的时候是变量str点出来的,能用变量点出来的方法不是实例化方法吗?在这里,不是!扩展方法是一种特殊的静态方法,但在代码中可以像扩展类型上的实例方法一样进行调用,实际上,编译器生成的中间语言 (IL) 会将代码转换为对静态方法的调用。
深入思考一下:类有封装性,而上例中的string是由微软定义,并且已经封装,而扩展类ExtString和string并没有继承关系,那么既然string已经封装,但现在还可以为它增加方法,是不是违反了类的封装性呢?不是!实际上,扩展方法无法访问它们所扩展的类型中的私有变量,扩展方法对它们所扩展的类型中的所有所有成员相互之间无异常,所扩展的类型中的方法或属性是public的能访问,是private还是不能访问,不干扰,无影响。
注意:
1.如果扩展方法与该类型中定义的方法具有相同的签名,则扩展方法永远不会被调用。
扩展方法被放在命名空间级别放入范围中。例如,如果您在同一个名为 Extensions 的命名空间中具有多个包含扩展方法的静态类,则这些扩展方法将全部由 using Extensions; 指令放入范围中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值