zoukankan      html  css  js  c++  java
  • C# 重载

    定义

      成员的签名包含成员的名称和参数列表。每个成员签名在类型中必须是唯一的。只要成员的参数列表不同,成员的名称可以相同。如果类型的两个或多个成员是同类成员(方法、属性、构造函数等),它们具有相同的名称和不同的参数列表,则称该同类成员进行了重载。例如,Array 类包含两个 CopyTo 方法。第一个方法采用一个数组和一个Int32 值,第二个方法采用一个数组和一个 Int64 值。

    在设计重载方法的时候应该注意一下事项

    1  避免随意更改重载中的参数名称。如果某个重载的一个参数与另一个重载的一个参数表示相同的输入,则这两个参数应具有同样的名称。

      例如,不要执行下面的操作:

      public void Write(string message, FileStream stream){}
      public void Write(string line, FileStream file, bool closeStream){}

    这些重载的正确定义如下所示

    public void Write(string message, FileStream stream){}
    public void Write(string message, FileStream stream, bool closeStream){}

    保持重载成员参数的顺序一致性。在所有重载中,同名参数的位置应该相同。

    例如,不要执行下面的操作:

    public void Write(string message, FileStream stream){}
    public void Write(FileStream stream,  string message, bool closeStream){}

    这些重载的正确定义如下所示:

    public void Write(string message, FileStream stream){}
    public void Write(string message, FileStream stream, bool closeStream){}

    以上两种写法结构清晰,增强代码的可读性,更加适合规范。

    此准则有两项约束:

    • 如果重载采用变量参数列表,则该列表必须是最后一个参数。

    • 如果重载采用 out 参数,按照约定,这类参数应作为最后的参数

    如果需要具有扩展性,将最长的重载作为虚重载。较短的重载只应逐步调用较长的重载。

    下面的代码示例对此进行了演示。

    public void Write(string message, FileStream stream)
    {
        this.Write(message, stream, false);
    }
    public virtual void Write(string message, FileStream stream, bool closeStream)
    {
        // Do work here.
    }

    此写法减少多余的代码,利于维护。

    不要对重载成员使用 ref 或 out 修饰符。

    public void Write(string message, int count)

    ...public void Write(string message, out int count)

  • 相关阅读:
    一个很好的博客 -----------------十年风雨,一个普通程序员的成长之路(五)
    项目中遇到的问题-----时间间隔查询
    不懂CPU工作原理又如何 ---CSDN
    鸿蒙OS横空出世-----
    关于项目中遇到的问题-- excel工具选择
    关于项目中遇到的问题-- 百度disconf 分布式配置中心
    SpringBoot使用邮件发送
    SpringBoot使用OkHttp
    Java8 获取当天日期的前一天
    如何将数字转为百分比?
  • 原文地址:https://www.cnblogs.com/xiao-bei/p/3909358.html
Copyright © 2011-2022 走看看