unity基础学习十五,C#高级属性:排序列表(SortedList),点阵列(BitArray)
1.C# 排序列表(SortedList)
SortedList 类代表了一系列按照键来排序的键/值对,这些键值对可以通过键和索引来访问。
排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。如果您使用索引访问各项,则它是一个动态数组(ArrayList),如果您使用键访问各项,则它是一个哈希表(Hashtable)。集合中的各项总是按键值排序。
SortedList 类的方法和属性
下表列出了 SortedList 类的一些常用的 属性:
Capacity | 获取或设置 SortedList 的容量。 |
Count | 获取 SortedList 中的元素个数。 |
IsFixedSize | 获取一个值,表示 SortedList 是否具有固定大小。 |
IsReadOnly | 获取一个值,表示 SortedList 是否只读。 |
Item | 获取或设置与 SortedList 中指定的键相关的值。 |
Keys | 获取 SortedList 中的键。 |
Values | 获取 SortedList 中的值。 |
下表列出了 SortedList 类的一些常用的 方法:
1 | public virtual void Add( object key, object value ); 向 SortedList 添加一个带有指定的键和值的元素。 |
2 | public virtual void Clear(); 从 SortedList 中移除所有的元素。 |
3 | public virtual bool ContainsKey( object key ); 判断 SortedList 是否包含指定的键。 |
4 | public virtual bool ContainsValue( object value ); 判断 SortedList 是否包含指定的值。 |
5 | public virtual object GetByIndex( int index ); 获取 SortedList 的指定索引处的值。 |
6 | public virtual object GetKey( int index ); 获取 SortedList 的指定索引处的键。 |
7 | public virtual IList GetKeyList(); 获取 SortedList 中的键。 |
8 | public virtual IList GetValueList(); 获取 SortedList 中的值。 |
9 | public virtual int IndexOfKey( object key ); 返回 SortedList 中的指定键的索引,索引从零开始。 |
10 | public virtual int IndexOfValue( object value ); 返回 SortedList 中的指定值第一次出现的索引,索引从零开始。 |
11 | public virtual void Remove( object key ); 从 SortedList 中移除带有指定的键的元素。 |
12 | public virtual void RemoveAt( int index ); 移除 SortedList 的指定索引处的元素。 |
13 | public virtual void TrimToSize(); 设置容量为 SortedList 中元素的实际个数。 |
using System;
using System.Collections;
namespace CollectionsApplication
{
class Program
{
static void Main(string[] args)
{
SortedList sl = new SortedList();
sl.Add("001", "Zara Ali");
sl.Add("002", "Abida Rehman");
sl.Add("003", "Joe Holzner");
sl.Add("004", "Mausam Benazir Nur");
sl.Add("005", "M. Amlan");
sl.Add("006", "M. Arif");
sl.Add("007", "Ritesh Saikia");
if (sl.ContainsValue("Nuha Ali"))
{
Console.WriteLine("This student name is already in the list");
}
else
{
sl.Add("008", "Nuha Ali");
}
// 获取键的集合
ICollection key = sl.Keys;
foreach (string k in key)
{
Console.WriteLine(k + ": " + sl[k]);
}
}
}
}
2.C# 点阵列(BitArray)
BitArray 类管理一个紧凑型的位值数组,它使用布尔值来表示,其中 true 表示位是开启的(1),false 表示位是关闭的(0)。
当您需要存储位,但是事先不知道位数时,则使用点阵列。您可以使用整型索引从点阵列集合中访问各项,索引从零开始。
BitArray 类的方法和属性
下表列出了 BitArray 类的一些常用的 属性:
Count | 获取 BitArray 中包含的元素个数。 |
IsReadOnly | 获取一个值,表示 BitArray 是否只读。 |
Item | 获取或设置 BitArray 中指定位置的位的值。 |
Length | 获取或设置 BitArray 中的元素个数。 |
下表列出了 BitArray 类的一些常用的 方法:
1 | public BitArray And( BitArray value ); 对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位与操作。 |
2 | public bool Get( int index ); 获取 BitArray 中指定位置的位的值。 |
3 | public BitArray Not(); 把当前的 BitArray 中的位值反转,以便设置为 true 的元素变为 false,设置为 false 的元素变为 true。 |
4 | public BitArray Or( BitArray value ); 对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位或操作。 |
5 | public void Set( int index, bool value ); 把 BitArray 中指定位置的位设置为指定的值。 |
6 | public void SetAll( bool value ); 把 BitArray 中的所有位设置为指定的值。 |
7 | public BitArray Xor( BitArray value ); 对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位异或操作。 |
using System;
using System.Collections;
namespace CollectionsApplication
{
class Program
{
static void Main(string[] args)
{
// 创建两个大小为 8 的点阵列
BitArray ba1 = new BitArray(8);
BitArray ba2 = new BitArray(8);
byte[] a = { 60 };
byte[] b = { 13 };
// 把值 60 和 13 存储到点阵列中,存入长度为8的二进制数
ba1 = new BitArray(a);
ba2 = new BitArray(b);
// ba1 的内容
Console.WriteLine("Bit array ba1: 60");
for (int i = 0; i < ba1.Count; i++)
{
Console.Write("{0, -6} ", ba1[i]);
}
Console.WriteLine();
// ba2 的内容
Console.WriteLine("Bit array ba2: 13");
for (int i = 0; i < ba2.Count; i++)
{
Console.Write("{0, -6} ", ba2[i]);
}
Console.WriteLine();
BitArray ba3 = new BitArray(8);
ba3 = ba1.And(ba2);
// ba3 的内容
Console.WriteLine("Bit array ba3 after AND operation: 12");
for (int i = 0; i < ba3.Count; i++)
{
Console.Write("{0, -6} ", ba3[i]);
}
Console.WriteLine();
ba3 = ba1.Or(ba2);
// ba3 的内容
Console.WriteLine("Bit array ba3 after OR operation: 61");
for (int i = 0; i < ba3.Count; i++)
{
Console.Write("{0, -6} ", ba3[i]);
}
Console.WriteLine();
Console.ReadKey();
}
}
}
Bit array ba1: 60 False False True True True True False False Bit array ba2: 13 True False True True False False False False Bit array ba3 after AND operation: 12 False False True True False False False False Bit array ba3 after OR operation: 61 True False True True False False False False