VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > c#教程 >
  • C#教程之C#教程之成员变量太多怎么破?

本站最新发布   C#从入门到精通
试听地址  
https://www.xin3721.com/eschool/CSharpxin3721/

 在软件开发过程中我们经常遇到某个类的成员变量越来越多,显的乱糟糟的,有没有一种优雅的解决方法呢?如果大多是BOOL型可以使用BitArray来管理这些变量,其它类型可以创建一个数据结构包含进去。

BitArray: Manages a compact array of bit values, which are represented as Booleans, where true indicates that the bit is on (1) and false indicates the bit is off (0).

  

复制代码
public class BitArrayTest
        {
            private BitArray bitArray;

            public BitArrayTest()
            {
                int leng = Enum.GetValues(typeof(Flag)).Length;
                bitArray = new BitArray(leng);
            }

            public bool GetFlag(Flag flag)
            {
                lock(bitArray.SyncRoot)
                {
                    return bitArray[(int)flag];
                }
            }
            public void SetFlag(Flag flag, bool result)
            {
                lock(bitArray.SyncRoot)
                {
                    bitArray[(int)flag] = result;
                }
            }

            public void ResetFlag()
            {
                lock (bitArray.SyncRoot)
                {
                    bitArray.SetAll(false);
                }
            }

            public void SetFlagTrue(Flag flag)
            {
                SetFlag(flag, true);
            }

            public void SetFlagFalse(Flag flag)
            {
                SetFlag(flag, false);
            }
        }
复制代码

 

比如有成员变量flagOne,flagTwo, flagThree,可以通过一个枚举类映射变量:

 

复制代码
public enum Flag
        {
            flagOne,
            flagTwo,
            flagThree,
        }
复制代码

 

设置和读取变量:

复制代码
BitArrayTest test = new BitArrayTest();
            test.SetFlagTrue(Flag.flagOne);
            if (test.GetFlag(Flag.flagOne))
            {

            }
复制代码

 

代码是不是变得整洁了呢?

相关教程