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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李荣壮 黑马帝   /  2011-10-22 22:41  /  2961 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看传智 多线程的视频的时候,把方法做参数传递的时候,不能加短号,否则会报错. 为什么呢?

Thread threadFirst = new Thread(countTime);

评分

参与人数 1技术分 +1 收起 理由
admin + 1 没人解答吗?

查看全部评分

5 个回复

正序浏览
朱勋 黑马帝 2011-10-24 08:51:22
地板
线程的调用机制是委托来调用方法的,不能直接调用。{:soso_e100:}
回复 使用道具 举报
哦,明白了,谢谢
回复 使用道具 举报
李荣壮 发表于 2011-10-23 16:36
不是啊,我是说,那个CountTime,它不是一个方法吗,一般调用方法的时候不是应该这样:CountTime(),但是他做参 ...

大概你还没有听懂我说的,你的意思就是为什么那个方法不带这个括号"()",因为这个方法是通过委托来传进来的,只能输入方法的名称,不能带这个”()"的,因为你如果加上”()",那就成了直接调用方法了,那样是不允许的,只能通过委托来调用方法的。
回复 使用道具 举报
杨恩锋 发表于 2011-10-23 11:22
加短号?是叫括号吧,这个”()"是吧,那个传进来是委托来的啊,其实内部编译器隐藏了这个部分:ThreadStart ...

不是啊,我是说,那个CountTime,它不是一个方法吗,一般调用方法的时候不是应该这样:CountTime(),但是他做参数传递时ThreadStart ts=new ThreadStart(CountTime),后面没有"()"啊
回复 使用道具 举报
加短号?是叫括号吧,这个”()"是吧,那个传进来是委托来的啊,其实内部编译器隐藏了这个部分:ThreadStart ts=new ThreadStart(CountTime);Thread threadFirst=new Thread(ts); 这部分编译器自动帮其生成,然后你去看ThreadStart 的定义就知道ThreadStart这个委托既没有参数也没有返回值的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马