zoukankan      html  css  js  c++  java
  • C#部分方法定义

    部分类也可以定义部分方法。部分方法在部分类中定义,但没有方法体,在另一个部分类中执行。在这两个部分类中,都要使用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时,运行库发现该方法没有执行代码,因此会继续执行下一行代码。但实际上,编译代码时,如果代码包含一个没有执行代码的部分方法,编译器会完全删除该方法,还会删除对该方法的所有调用。执行代码时,不会检查执行代码,因为没有检查方法的调用。这会略微提高性能。

    与部分类一样,在定制自动生成的代码或设计器创建的代码时,部分方法是很有用的。设计器会声明部分方法,用户根据具体情形选择是否执行它。如果不执行它,就不会影响性能,因为该方法在编译过的代码中不存在。

    现在考虑为什么部分方法不能有返回类型。如果可以回答这个问题,就可以确保完全理解了这个主题,我们将此留作练习。

  • 相关阅读:
    xadmin进行全局配置(修改模块名为中文以及其他自定义的操作步骤)
    xadmin邮箱验证码 标题 EmailVerifyRecord object
    Django源码安装xadmin报错Apps aren't loaded yet.
    python虚拟环境virtualenv下安装MySQL-python(1.2.3)
    Pycharm界面的子窗口不见了,怎么办?
    MySQL-python终于安装成功了
    mysql-python 安装错误: Cannot open include file: 'config-win.h': No such file or directory
    配凑法
    双连不等式
    求参数的取值范围
  • 原文地址:https://www.cnblogs.com/Maxq/p/5677040.html
Copyright © 2011-2022 走看看