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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 廖新 中级黑马   /  2013-3-8 17:16  /  1806 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             test s = new test("DDD");
  6.             Console.ReadKey();
  7.         }
  8.     }
  9.     class test
  10.     {
  11.         public test(string t)
  12.         {
  13.             Console.WriteLine("string");
  14.         }
  15.         public test(object t)
  16.         {
  17.             Console.WriteLine("object");
  18.         }
  19.     }
复制代码
如上代码,传入一个字符串参数到构造函数,输出结果是"string",其实object那个函数也可以接收,为嘛没去调用呢?

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

5 个回复

倒序浏览
c的?没了解清你说的,就当路过下
回复 使用道具 举报
这个就要从构造函数的运行来了,有时间我也想去查查
目前理解: 实例化的时候,会对应构造函数,找到最符合的构造函数
这就像你实例化一个person的时候, 信息是中国人,  person下有两个构造函数,一个是构造地球人, 一个构造中国人
匹配中国人是最合适的, 为什么不继续匹配?就是你说的object不输出, 不要忘了一个很重要的问题:
这是构造函数,不是普通函数,构造函数是用来处理对象的,永远返回一个对象,处理一个对象, 判断完string匹配后马上跳出,因为没有再继续匹配的必要了, 每次构造只可能匹配一个构造函数, 而且是匹配最合适, string比object更匹配

以上是个人观点, 我觉得有空可以仔细查一查里面的构造函数机制,相信就可以更清楚了

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
因为你传入的参数就是string类型的(”ddd“)所以调用也是调用构造函数的string
回复 使用道具 举报
朱京辉 发表于 2013-3-8 17:52
这个就要从构造函数的运行来了,有时间我也想去查查
目前理解: 实例化的时候,会对应构造函数,找到最符合的构 ...

这比喻好。。。
回复 使用道具 举报
传入的参数是string类型的当然会调用 public test(string t)了;object是基类,所有类型继承于他,如果你传入的是其他类型比如int类型,就会调用public test(object t);

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马