public static void dumpthreadstate(thread t)
{
if ((t.threadstate&threadstate.aborted)==threadstate.aborted)
   {
    console.write ("aborted");
 
   }}
这里T是一个线程对象 ,((t.threadstate&threadstate.aborted)==threadstate.aborted)这个语句我不理解是什么意思,为什么不是(t.threadstate==threadstate.aborted)???t.threadstate&threadstate.aborted 这个语句代表什么意思呢? & 运算符是什么运算符号?
我是初学者,各位老大见笑了

解决方案 »

  1.   

    threadstate是一个枚举,一般这样的枚举的枚举值对应的数字都是1,2,4,8,16,也就是二进制的1,10,100,1000,10000.你将threadstate.aborted强制转换成Int一下就知道了
    用1,2,4,8,16做枚举值是为了方便位运算
    &是位运算符"与"
    还|是"或"t.threadstate&threadstate.aborted其实判断了t.threadstate的多种可能,与t.threadstate==threadstate.aborted不是等价的
    t.threadstate可能同时处于多个状态,用t.threadstate&threadstate.aborted表示只要其中 有一个状态是&threadstate.aborted就成立
      

  2.   

    &运算符要先转换成二进制再进行位运算.
    例如下面是&的运算过程:6&7<=> 110
    &111
    -----
     111<=>7