ASP.NET OOP-集合的 BitArray 类操作_BitArray

ASP.NET OOP-集合的 BitArray 类操作_BitArray



一、首先要在“App_Code / .cs”描述“类”所要的相关程序。


///
/// C# 面向对象程序设计集合的“BitArray”类的操作。 
/// 
/// BitArray 类的功能在于保存位型态的数据,数据均以布尔类型来表示,
/// 这是一种精简型的轻量级数组,一个字节所形成的数组,
/// 其实践的界面有“ICollection、IEnumerable、ICloneable”
/// 所以这个类同样实践了一般集合所需要的方法成员,以提供集合操作
/// 所需要的一般功能。
/// 
/// BitArray 类提供了几个重载的版本,定义如下所示:
/// 
/// public BitArray(byte[] bytes)
/// 
/// @这个构造函数接受一个字节数组的参数,每一个字节由八个连续的
/// 位所组成,在使用这个字节数组作为参数时,每一个字节会被
/// 拆解成为 8 个位作保存。
/// 
/// public BitArray(int intval)
/// 
/// @这个覆写的版本接受的参数为整数类型的数组对象,里面每一个整数
/// 代表一串连续的 32 位,因此每一个整数值会被折解成 32 个对应的布尔值
/// 作保存。
/// 
/// public BitArray(bool[] blnval)
/// 
/// @这个覆写的版本接受我们建立布尔类型的 BitArray 类对象。
/// 
/// public BitArray(BitArray bits)
/// 
/// @这个覆写的版本可以直接将整个 BitArray 类对象当作参数,建立一个新的
/// BitArray 类对象。
/// 
/// public BitArray(int length)
/// 
/// @这个覆写的版本允许我们在建立其实例对象的时候,指定其集合对象容量的初始值
/// ,只要将代表该容量的整数值作为参数传入此版本的构造函数即可。
/// 
/// 但是要注意的是,这个版本的构造函数跟前面 int 类型数组的版本并不一样,
/// 里面接受的是一个整数类型的数值 length 代表这个集合所能够容纳的字节数目,
/// 使用此版本所建立的 BitArray 集合对象,其中的默认的保存内容为布尔值 false。
/// 
/// BitArray 类所保存的是数组型态的数据,因此这个集合类亦支持使用于位运算
/// 的相关操作符,例如“And、XOR、OR、NOT”等等,下列将对这些项目做说明。
/// 
/// @ ==== 位运算 ================
/// 
/// 1.public BitArray And(BityArray baValue)
/// 
/// 将调用这个方法的集合对象所包含的元素内容,和传入的 BitArray 对象 baValue 
/// 所包含的元素作 And 运算后,返回其运算效果。
/// 
/// 2.public BitArray Xor(BityArray baValue)
/// 
/// 同上述方法,进行 Xor  运算后,返回其运算效果。
/// 
/// 3.public BitArray Or(BityArray baValue)
///
/// 同上述方法,进行 Or  运算后,返回其运算效果。
/// 
/// @ ==== 存取指定位 ============
/// 
/// 1.public bool Get(int index)
/// 
/// 返回指定索引值 index 所代表的位值。
/// 
/// 2.public void Set(int intdex, bool value)
/// 
/// 将数值 value 设定于指定的索引位置。
/// 
/// 3.public void Set(int intdex, value)
/// 
/// 将整数 bit 集合中的元素设定为指定的位。
///


public class BitArray_Cs
{

}

二、接下来就可以在“aspx.cs”操作相关“类”所建立的“对象”等属性与方法的操作。


using System;
using System.Collections;

public partial class _BitArray : System.Web.UI.Page
{
    //当 Button 控件按下后所要执行的动作。
    protected void Button1_Click(object sender, EventArgs e)
    {
        //声明建构对象操作实例。(BitArray)
        BitArray objBitArray1 = new BitArray(32);

        //声明整数数组并设定元素大小。
        int[] arrContentByte = { 51 };

        //声明建构对象操作实例并设定初始值为整数数组。(BitArray)
        BitArray objBitArray2 = new BitArray(arrContentByte);

        //设定 Label 控件的显示文字。
        this.Label_Output.Text = "1.声明建立一个长度为 32 的 BitArray1 数组对象,以下为输出内容:

";

        //显示 BitArray 集合里面的内容。(BitArray1 数组元素内容)
        OutPutBitArray_Fn(objBitArray1);

        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "2.声明建立一个以字节初始化的 BitArray2 数组对象,以下为输出内容:

";

        //显示 BitArray 集合里面的内容。(BitArray2 数组元素内容)
        OutPutBitArray_Fn(objBitArray2);

        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "3.以下输出 objBitArray1 调用方法 Not 返回数组的内容:

";

        //显示 BitArray 集合里面的内容。(BitArray1 使用 NOT 计算后的数组元素内容)
        OutPutBitArray_Fn(objBitArray1.Not());

        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "4.以下输出 objBitArray1 调用方法 objBitArray1.Xor(objBitArray2) 返回数组的内容:

";

        //显示 BitArray 集合里面的内容。(BitArray1 数组元素内容)
        OutPutBitArray_Fn(objBitArray1);
        //显示 BitArray 集合里面的内容。(BitArray1 数组元素内容)
        OutPutBitArray_Fn(objBitArray2);
        //显示 BitArray 集合里面的内容。(BitArray1 与 BitArray2 使用 XOR 合并计算后的数组元素内容)
        OutPutBitArray_Fn(objBitArray1.Xor(objBitArray2));

        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "5.以下输出 objBitArray1 调用方法 SetAll 将所有值指定成 true 内容:

";

        //将 BitArray 数组元内容使用 SetAll() 方法,将全部值改变成 true 内容。
        objBitArray1.SetAll(true);
        //显示 BitArray 集合里面的内容。(BitArray1 使用 SetAll() 方法计算后的数组元素内容)
        OutPutBitArray_Fn(objBitArray1);

        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "6.以下透过枚举取得 objBitArry2 所有元素,并且依序输出:

";

        //显示 BitArray 集合里面的内容。(将 BitArray2 使用 IEnumerator 枚举方法存取数组元素内容)
        OutGetIEnumerator_Fn(objBitArray2);
    }

    //声明私人成员案例方法。(使用 BitArray 对象,显示 BitArray 集合里面的内容)
    protected void OutPutBitArray_Fn(BitArray objBitArray_Val)
    {
        //使用循环依序读取数组的元素内容。
        for (int i = 0; i < objBitArray_Val.Length; i++)
        {
            //设定 Label 控件的显示文字。(取得的数组内容值)
            this.Label_Output.Text += objBitArray_Val[i] + "&nbsp;";
        }

        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "

";

    }

    //声明私人成员案例方法。(使用 IEnumerator 界面,显示 BitArray 集合里面的内容)
    protected void OutGetIEnumerator_Fn(BitArray objBitArray_Val)
    {
        //声明 IEnumerator 界面类型并取得 BitArray 对象的元素集合枚举内容。
        IEnumerator objIEnumerator = objBitArray_Val.GetEnumerator();

        //使用 MoveNext() 方法,将枚举值集合的索引值移到下一个项目。
        while (objIEnumerator.MoveNext())
        {
            //设定 Label 控件的显示文字。(取得的枚举内容值)
            this.Label_Output.Text += objIEnumerator.Current + "&nbsp;";
        }

        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "

";

    }

}

三、详细 UI 部分请自行参阅源代码的.aspx 部分,源代码请见 YouTube 说明页的下载连结位置。