DataRowState rowState = DataRowState.Deleted;
if(rowState == (DataRowState.Modified | DataRowState.Deleted))
此if判断为false
请问为什么,谢谢!!

解决方案 »

  1.   

    rowState == (DataRowState.Modified | DataRowState.Deleted)) 
    不能用等于。用&
      

  2.   

    rowState == (DataRowState.Modified | DataRowState.Deleted)) 
    此种写法没有错误
      

  3.   

    当然有错啦
    |是或运算
    ||是逻辑或
    应该是
    if(rowState == DataRowState.Modified || rowState == DataRowState.Deleted) 
      

  4.   

    管道符号“|”是按位或的意思,但用在枚举中(枚举需有FlagsAttribute属性)是表示同时包含这两个枚举值。本例中“DataRowState.Modified|DataRowState.Deleted”表示“既被修改了也被删除了”。
      

  5.   

    if(rowState ==DataRowState.Modified ||rowState == DataRowState.Deleted) 
    {}
    ||或 &与
      

  6.   

    只能修改成
    if (rowState == DataRowState.Modified ||rowState == DataRowState.Deleted))
      

  7.   

    DataRowState
            Detached = 1,
           
            Unchanged = 2,
         
            Added = 4,
          
            Deleted = 8,
             
            Modified = 16,所以 
    DataRowState.Modified |  DataRowState.Deleted=24
      

  8.   

    (DataRowState.Modified | DataRowState.Deleted),经测试就是同时包含这两个值
    6楼的说的应该是正确的,但关于(用在枚举中(枚举需有FlagsAttribute属性)是表示同时包含这两个枚举值))这个知识点在哪可找到?可否说明一下,谢谢!!
      

  9.   

    就是与运算嘛;用整型表示多参;windows api经常用到。判断式是用 &