zoukankan      html  css  js  c++  java
  • null值作为参数的重载问题

    class Program
    {
    static void Main(string[] args)
    {
    string str = test(null);
    }


    private static string test(object obj)
    {
    return "object";
    }

    private static string test(string str)
    {
    return "string";
    }
    }

    str 的结果显示为 string;

    重载解析过程是以两阶段运行的。第一阶段选取所有可获得并且可应用的方法或构造器。第二阶段在第一阶段选取的方法或构造器中选取最精确的一个。如果一个方法或构造器可以接受传递给另一个方法或构造器的任何参数,那么我们就说第一个方法比第二个方法缺乏精确性;

    因为所有的string都是object类型,但所有的object并不都是string类型,所以选择test(string str),要想用一个null参数来调用 test(Object),这样写代码:test((Object)null)。

    在做API的时候,

    1.尽量避免使用重载;

    2.弱重载,明确的区分开各种参数类型

  • 相关阅读:
    密文搜索
    poj 1182 食物链
    1147. Heaps (30)
    1146. Topological Order (25)
    1145. Hashing
    1142. Maximal Clique (25)
    fzu 2112 tickets
    51nod 1554 欧姆诺姆和项链
    codeforces 963B Destruction of a Tree
    hdu 3294 Girls' research
  • 原文地址:https://www.cnblogs.com/zxyl/p/2914113.html
Copyright © 2011-2022 走看看