黑马程序员技术交流社区

标题: 关于方法作为参数传递时的疑问 [打印本页]

作者: 李荣壮    时间: 2011-10-22 22:41
标题: 关于方法作为参数传递时的疑问
看传智 多线程的视频的时候,把方法做参数传递的时候,不能加短号,否则会报错. 为什么呢?

Thread threadFirst = new Thread(countTime);


作者: 杨恩锋    时间: 2011-10-23 11:22
加短号?是叫括号吧,这个”()"是吧,那个传进来是委托来的啊,其实内部编译器隐藏了这个部分:ThreadStart ts=new ThreadStart(CountTime);Thread threadFirst=new Thread(ts); 这部分编译器自动帮其生成,然后你去看ThreadStart 的定义就知道ThreadStart这个委托既没有参数也没有返回值的。
作者: 李荣壮    时间: 2011-10-23 16:36
杨恩锋 发表于 2011-10-23 11:22
加短号?是叫括号吧,这个”()"是吧,那个传进来是委托来的啊,其实内部编译器隐藏了这个部分:ThreadStart ...

不是啊,我是说,那个CountTime,它不是一个方法吗,一般调用方法的时候不是应该这样:CountTime(),但是他做参数传递时ThreadStart ts=new ThreadStart(CountTime),后面没有"()"啊
作者: 杨恩锋    时间: 2011-10-23 17:28
李荣壮 发表于 2011-10-23 16:36
不是啊,我是说,那个CountTime,它不是一个方法吗,一般调用方法的时候不是应该这样:CountTime(),但是他做参 ...

大概你还没有听懂我说的,你的意思就是为什么那个方法不带这个括号"()",因为这个方法是通过委托来传进来的,只能输入方法的名称,不能带这个”()"的,因为你如果加上”()",那就成了直接调用方法了,那样是不允许的,只能通过委托来调用方法的。
作者: 李荣壮    时间: 2011-10-24 00:45
哦,明白了,谢谢
作者: 朱勋    时间: 2011-10-24 08:51
线程的调用机制是委托来调用方法的,不能直接调用。{:soso_e100:}




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