博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#部分方法定义
阅读量:6948 次
发布时间:2019-06-27

本文共 1328 字,大约阅读时间需要 4 分钟。

部分类也可以定义部分方法。部分方法在部分类中定义,但没有方法体,在另一个部分类中执行。在这两个部分类中,都要使用partial关键字。

public partial class MyClass

{
partial void MyPartialMethod();
}
public partial class MyClass
{
partial void MyPartialMethod()
{
// Method implementation
}
}
部分方法也可以是静态的,但它们总是私有的,且不能有返回值。它们使用的任何参数都不能是out参数,但可以是ref参数。部分方法还不能使用virtual、abstract、override、new、sealed和extern修饰符。
有了这些限制,就不太容易看出部分方法的作用了。实际上,部分方法在编译代码时非常重要,其用法倒并不重要。考虑下面的代码:
public partial class MyClass
{
partial void DoSomethingElse();
public void DoSomething()
{
Console.WriteLine(“DoSomething() execution started.”);
DoSomethingElse();
Console.WriteLine(“DoSomething() execution finished.”);
}
}
public partial class MyClass
{
partial void DoSomethingElse()
{
Console.WriteLine(“DoSomethingElse() called.”);
}
}
这段代码定义了部分方法DoSomethingElse,在第一个部分类中定义,在第二个部分类中执行。在控制台应用程序中调用DoSomething时,输出如下所示:
DoSomething() execution started.
DoSomethingElse() called.
DoSomething() execution finished.
如果删除第二个部分类定义,或者删除部分方法的全部执行代码(注释掉代码),输出就如下所示:
DoSomething() execution started.
DoSomething() execution finished.
读者可能认为,调用DoSomethingElse时,运行库发现该方法没有执行代码,因此会继续执行下一行代码。但实际上,编译代码时,如果代码包含一个没有执行代码的部分方法,编译器会完全删除该方法,还会删除对该方法的所有调用。执行代码时,不会检查执行代码,因为没有检查方法的调用。这会略微提高性能。
与部分类一样,在定制自动生成的代码或设计器创建的代码时,部分方法是很有用的。设计器会声明部分方法,用户根据具体情形选择是否执行它。如果不执行它,就不会影响性能,因为该方法在编译过的代码中不存在。
现在考虑为什么部分方法不能有返回类型。如果可以回答这个问题,就可以确保完全理解了这个主题,我们将此留作练习。

转载地址:http://zuenl.baihongyu.com/

你可能感兴趣的文章
用idea制作Javaweb程序遇到的过程
查看>>
一台Java服务器怎样跑多少个线程
查看>>
想要成为python大神,这17个老司机收藏的国外免费学习网站不可错过!
查看>>
各种按钮的样式
查看>>
GoJS教程[2019]:使用GraphObjects构建零件
查看>>
Java锁细节整理
查看>>
php编译安装
查看>>
正则介绍及grep/egrep用法
查看>>
锚定比特币现金(BCH),助力构建价值互联网时代
查看>>
微服务测试之接口测试和契约测试
查看>>
.NET的数学库NMath实用教程——创建复数的几种方法
查看>>
iOS-LinkLabel
查看>>
创建一个自己的MVC框架
查看>>
Docker | 第一章:Docker简介
查看>>
OSChina 周三乱弹 —— 你会 3P 吗?【PHP,JSP 和 ASP】
查看>>
OSChina 周三乱弹 ——你最想在墓碑上被写些什么
查看>>
openjdk 7编译记录
查看>>
数据结构 ConcurrentHashMap
查看>>
spring boot 初始化是怎么扫描类的
查看>>
css3实现圆形进度条
查看>>