黑马程序员技术交流社区
标题:
object类型疑问
[打印本页]
作者:
廖新
时间:
2013-3-8 17:16
标题:
object类型疑问
class Program
{
static void Main(string[] args)
{
test s = new test("DDD");
Console.ReadKey();
}
}
class test
{
public test(string t)
{
Console.WriteLine("string");
}
public test(object t)
{
Console.WriteLine("object");
}
}
复制代码
如上代码,传入一个字符串参数到构造函数,输出结果是"string",其实object那个函数也可以接收,为嘛没去调用呢?
作者:
张卫刚
时间:
2013-3-8 17:24
c的?没了解清你说的,就当路过下
作者:
朱京辉
时间:
2013-3-8 17:52
这个就要从构造函数的运行来了,有时间我也想去查查
目前理解: 实例化的时候,会对应构造函数,找到最符合的构造函数
这就像你实例化一个person的时候, 信息是中国人, person下有两个构造函数,一个是构造地球人, 一个构造中国人
匹配中国人是最合适的, 为什么不继续匹配?就是你说的object不输出, 不要忘了一个很重要的问题:
这是构造函数,不是普通函数,构造函数是用来处理对象的,永远返回一个对象,处理一个对象, 判断完string匹配后马上跳出,因为没有再继续匹配的必要了, 每次构造只可能匹配一个构造函数, 而且是匹配最合适, string比object更匹配
以上是个人观点, 我觉得有空可以仔细查一查里面的构造函数机制,相信就可以更清楚了
作者:
快乐之恋
时间:
2013-3-8 18:08
因为你传入的参数就是string类型的(”ddd“)所以调用也是调用构造函数的string
作者:
廖新
时间:
2013-3-8 18:36
朱京辉 发表于 2013-3-8 17:52
这个就要从构造函数的运行来了,有时间我也想去查查
目前理解: 实例化的时候,会对应构造函数,找到最符合的构 ...
这比喻好。。。
作者:
李贤贤
时间:
2013-3-10 13:43
传入的参数是string类型的当然会调用 public test(string t)了;object是基类,所有类型继承于他,如果你传入的是其他类型比如int类型,就会调用public test(object t);
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2