none
求助代码解释 RRS feed

  • 问题

  • 有如下代码片断 

    private byte flagsState;

            protected override void OnEnter(int rowIndex, bool throughMouseClick)
            {
                base.OnEnter(rowIndex, throughMouseClick);

                if ((base.DataGridView != null) && throughMouseClick)
                {
                    this.flagsState = (byte)(this.flagsState | 1);
                }
            }

            protected override void OnLeave(int rowIndex, bool throughMouseClick)
            {
                base.OnLeave(rowIndex, throughMouseClick);

                if (base.DataGridView != null)
                {
                    this.flagsState = (byte)(this.flagsState & -2);
                }
            }

    请帮忙解释下列在代码中语句这栏写的作用是什么?

    flagsState | 1

    flagsState & -2

     

     

    2011年3月28日 2:14

答案

全部回复

  • flagsState | 1

    把flsgsState的最小位置1.

    flagsState & -2

    检测flagsState的最高位与小端第2位是否为1.

    具体要看flagstate对每个位的定义来分析它哪些标记置位,哪些未置位,进而表示相关意义。

    2011年3月28日 2:38
  • 这部分知识在哪可以找到。
    2011年3月28日 3:04
  • 很多讲授编程语言的书籍都会提到,也许你可以查阅一些C/C++的读物,在C#中一般使用enum和flag特性来代替此类功能。不过位标记在速度上比较有保证,却不保证安全性。

    2011年3月28日 3:16
  • flagsState & -2

    检测flagsState的最高位与小端第2位是否为1.

    this.flagsState = (byte)(this.flagsState & -2);

    应该是将flagsState最末位清零。因为-2用二进制表示是11111110.

    2011年3月28日 3:27
  • 抱歉,我把补码给忘记了,谢谢tichen的提醒,也再次对牛先生抱歉,差点误人子弟>_<

    2011年3月28日 3:54
  • 感谢指点,但本人基础偏低,能否告知这部分内容在教材上归类于哪一部分,或者能否帮忙列几个网址,我认真学习学习

    2011年3月29日 0:33
  • 感谢指点,但本人基础偏低,能否告知这部分内容在教材上归类于哪一部分,或者能否帮忙列几个网址,我认真学习学习


    http://zh.wikipedia.org/wiki/%E4%BD%8D%E6%AE%B5

    May the force be with you!

    2011年3月29日 1:15
  • 和语言无关,看看计算机基础,了解一下位运算。
    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    2011年3月30日 2:36
    版主
  • 您也可以从 Wikipedia 上找 Bit Flag 来看看如何使用位标识。很多场景,如权限控制就会大量用到它们。
    Mark Zhou
    2011年3月30日 9:11