A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© §風過無痕§ 金牌黑马   /  2013-8-9 22:09  /  631 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 §風過無痕§ 于 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:}

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

3 个回复

倒序浏览
答案是:string;
个人认为:null是一个引用类型的默认值、应该就属于引用类型;
string也是应用类型,所以 array.Print(null);就等同于传了一个string类型的。
所以调用了 private void Print(string str)
         {
              Console.WriteLine("string");
         }

回复 使用道具 举报
因为string继承于object,string可隐式转换为object,所以会调用string。
这很好理解,调用时会找类型最精确的调用,不然有些类库的方法重载就有问题了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马