C#3.0的分部方法

C#分部方法的语法

在看C#语言的What's New时,突然发现新特性列表的最后,多出了一个“Partial Method Definitions”,但并不像其他新特性一样有超链接链接到其说明。上网搜索了一下,关于分部类型的信息非常少。尤其是中文信息,英文技术文章中,倒是有两篇不错的:http://blogs.msdn.com/wesdyer/archive/2007/05/23/in-case-you-haven-t-heard.aspx和http://community.bartdesmet.net/blogs/bart/archive/2007/07/28/c-3-0-partial -methods-what-why-and-how.aspx。

又仔细看了一下MSDN Library for Visual Studio 2008 Beta 2,终于对这个语言特性有所了解,在这里介绍一下,希望对大家有所帮助。

分部方法的定义和分部类型类似,只需在方法定义前添加partial关键字。但分部方法只能拆分成两个部分——一部分是定义声明(Definition Declaration),另一部分是实现声明(Implement Declaration)。其中定义声明看上去和抽象方法类似:

partial class CA
{
// ……
private void partial M(); // 定义声明|
而实现声明看上去和普通方法类似:
private void partial M() // 实现声明
{
// 方法体
}

在调用分部方法时,和调用其他方法一样:

CA a = new CA();
a.M();

只是,如果只有定义声明而没有编写实现声明,则编译器不会发射(Emit)该方法和调用该方法的语句的元数据与IL代码。换言之,如果没有编写实现声明,则编译得到的程序集中,CA类型里并没有M这个方法。

使用分部方法的注意事项

分部方法的语法非常简单,但有一些事项要注意。

时间: 2024-09-17 21:12:40

C#3.0的分部方法的相关文章

来看看两种好玩的方法,扩展方法和分部方法

好久没过来扯淡了,话说这年头还有偶遇的事情吗?比如国庆回家的汽车上有个妹子要你qq,要你微信,想着法子跟你聊天,然后睡了一觉,醒来发现 肾不见了?小花絮小花絮,要是肾真没了,也吹不了牛,败不了火了,继续言归正传.   一:扩展方法        说到扩展方法,我想大家都已经再熟悉不过了,也许你的解决方案中有无数个这样的扩展方法,自从有了Linq之后,我们的集合就再也不单纯了. 从下面的Linq类中,所有的方法都扩展在IEnumerable<T>上,恰恰我们的集合都继承于IEnumerable接

分部方法该纳入到C#中吗

C#新增的特性中引起争议的有许多,分部方法(Partial Method)算是一个.分部方法通常被定义在一个分部类中,在常规的类文件中也可实现.如果分部方法没有被实现,编译器就不会对他们进行编译. 分部方法有着严格的限制.它们必须是私有的,不能返回值,不能有输出参数.因为任何针对没有被实现的分部方法的调用都会简单地被忽略,所以说这些限制是非常有必要的.反过来又意味着,分部方法不能作为一个明确分配的变量.Visual Basic也有分部方法,尽管VB不需要对变量的明确分配,它也有同样的限制. 有那

对C# 2.0中匿名方法的怀疑分析

一.简介 所有的方法都使用一个来自于相同集合的元素的子集.在C# 2.0中,可选元 素集将会继续增长.从历史上看-除了C++内联方法之外-方法都要求有一个名字 .一个返回类型和一个方法体.而且可选择地,方法可以使用存取修饰符和一个 参数列表.在C# 2.0中,方法名已经从必需的变成了可选的. C# 2.0(一般就代表.NET)引入了匿名方法.一个匿名方法可以被用在任何使 用代理且该代理被定义为内联的情况下,它不需要方法名,而具有可选的参数和 一个方法体. 为了使用匿名方法,你需要了解什么是代理.

使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表

原文:使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表   我们知道目标平台是32位的程序运行在64位的系统上,去访问部分注册表的时候系统自动重定向到win32node节点对应的项去了.但是做过安装程序开发人员可能遇到过"需要去掉重定向"的问题,即直接访问64位程序的注册表. 网上有很多winAPI的方法,关闭注册表的重定向稍微复杂.(关闭文件系统的重定向稍微简单些,搬过来就可以用:关闭注册表的重定向我现在没看懂.) 我这里提供的方法不需要关闭重定向,也不需要

双屏-vb6.0用什么方法检测是否有副屏存在,求帮忙,急用

问题描述 vb6.0用什么方法检测是否有副屏存在,求帮忙,急用 50C 各路大神,请问vb6.0如何探测是否安装了扩展显示器(双屏)?谢谢通过什么方法判断连接没连接呢,急用,谢谢,分全给你,求帮忙. 解决方案 用EnumDisplayMonitors 写在模块中 Public Declare Function EnumDisplayMonitors Lib ""user32.dll"" (ByVal hdc As Long _ ByRef lprcClip As A

Android 蓝牙2.0的使用方法详解_Android

本文为大家分享了Android操作蓝牙2.0的使用方法,供大家参考,具体内容如下 1.Android操作蓝牙2.0的使用流程 (1)找到设备uuid (2)获取蓝牙适配器,使得蓝牙处于可发现模式,获取下位机的socket,并且与上位机建立建立连接,获取获取输入流和输出流,两个流都不为空时,表示连接成功.否则是连接失败. (3).与下位机的socket开始通信. (4).通信结束后,断开连接(关闭流,关闭socket) 2接下来接直接上代码:2.1找到设备uuid(一般厂商都会给开发者提供) 复制

关于datagrid中选中行的各列取值问题。能不能不用e.Item.Cells[0].text的方法啊?

问题描述 datagrid中选中行的各列取值往往用e.Item.Cells[0].text的方法,但这样做后,当datagrid的列更改后,就全错了,各位高手有没有更好的办法啊? 解决方案 解决方案二:改用模板列,在模板列中加入数据绑定控件并指定其ID号,获取值得时候用e.Item.findcontrol(controlid)的方法解决方案三:全部用模板列有点太复杂了,有没有更好的方法?自己顶下.

求MapXtreme 7.0 的破解方法或破解文件!

问题描述 求MapXtreme7.0的破解方法或破解文件!那位大大有相关的方法.文件或者链接就请发上来吧!-非常感谢! 解决方案 解决方案二:目前还没发现7.0的破解文件,楼主可试试6.8的破解解决方案三:关于地图数据转换推荐一个软件,功能很强大,支持的格式多.Safe.Software.FME.Desktop.v2010.SP1.build.6218.X64-Lz0这个0day出了.你可以搜索下.还有.2008年出了0day的mapxtremeMapInfo.MapXtreme.2005.v6

c# partial 分部类和分部方法

一.partial 它是一个关键字修饰符.可以将类或结构.接口或方法的定义拆分到两个或更多个源文件中. 每个源文件包含类型或方法定义的一部分,编译应用程序时将把所有部分组合起来.修饰符不可用于委托或枚举声明中. 二.分部类 在以下几种情况下需要拆分类定义: 处理大型项目时,使一个类分布于多个独立文件中可以让多位程序员同时对该类进行处理. 使用自动生成的源时,无需重新创建源文件便可将代码添加到类中. Visual Studio 在创建 Windows 窗体.Web 服务包装器代码等时都使用此方法.