黑马程序员技术交流社区

标题: 简单而比较有意思的题 [打印本页]

作者: §風過無痕§    时间: 2013-8-9 22:09
标题: 简单而比较有意思的题
本帖最后由 §風過無痕§ 于 2013-8-10 15:17 编辑

今天逛论坛的时候偶遇此题  觉得很有意思{:soso_e113:}!特转过来与各位马友一起探讨探讨{:soso_e151:}

气温高天热但麻烦各位稍安勿躁 {:soso_e156:}    马上为各位献上代码:
  1. namespace 简单而又意义的题
  2. {
  3.      class Program
  4.      {
  5.           static void Main(string[] args)
  6.          {
  7.                Program array = new Program ();
  8.                array.Print(null);
  9.                Console.ReadLine();//暂时不关闭窗
  10.          }

  11.          private void Print(object obj)
  12.          {
  13.               Console.WriteLine("object");
  14.          }

  15.          private void Print(string str)
  16.          {

  17.               Console.WriteLine("string");
  18.          }
  19.     }
  20. }
复制代码
答案:是多少呐???请各位马友来揭晓

           为什么是这个答案呐!{:soso_e132:}这是为什么呢{:soso_e132:}{:soso_e132:}


作者: 咖喱猫    时间: 2013-8-9 23:19
答案是:string;
个人认为:null是一个引用类型的默认值、应该就属于引用类型;
string也是应用类型,所以 array.Print(null);就等同于传了一个string类型的。
所以调用了 private void Print(string str)
         {
              Console.WriteLine("string");
         }


作者: lvjayj    时间: 2013-8-10 00:14
因为string继承于object,string可隐式转换为object,所以会调用string。
这很好理解,调用时会找类型最精确的调用,不然有些类库的方法重载就有问题了。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2