C#常用对象
一、Random类
Random类用来产生伪随机数,生成的随机数是从“种子值”开始的,如果反复使用同一个种子值,就会生成相同的数字系列。
例如以下两种代码就是使用同一个种子值和不同种子值的区别:
for (int i = 0; i < 10; i++)
{
Random rd = new Random();
Console.WriteLine(rd.NextDouble());
} //反复使用同一个种子值,生成相同的数字系列
===========================================
Random rd = new Random();
for (int i = 0; i < 10; i++)
{
Console.WriteLine(rd.NextDouble());
} //种子值不同,生成随机数字
它的主要方法是Next方法,语法格式为Random rd = new Random(); rd.Next(MinValue,MaxValue);
MinValue和MaxValue均为非必选项,如果两项均不使用,则返回一个大于或等于0的随机数。如果两项都有,那么可以取到左边MinValue,取不到右边MaxValue。
MSDN:
默认情况下,Random类的无参数构造函数使用系统时钟生成其种子值,而参数化构造函数可根据当前时间的刻度数采用 Int32 值。但由于时钟分辨率有限,频繁地创建不同的 Random对象会创建出产生相同随机数序列的随机数生成器。通过创建单个而不是多个 Random 对象可以避免此问题。要提高性能,请创建一个 Random,以便随着时间的推移可以生成很多随机数,而不要重复新建 Random来生成一个随机数。
二、ArrayList类(集合)
ArrayList类是Object类型的。
object类型是预定义类System.Object的别名,是所有其他类型的基类,为派生类提供低级别的服务。所有的类型都是直接或间接地由object派生而来。因此,一个object类型的变量可以赋予任何类型的值。
ArrayList类表示可按需动态增加的数组,位于System.Collections命名空间,使用时需添加。
常用属性:
Count属性:获取动态数组中实际所包含的元素数(在数组中是Length);
Item属性:获取或设置指定索引处的元素。
ArrayList类常用方法:
Add方法:将某一元素添加到动态数组的末尾;
AddRange方法:将某字符串组加到动态数组的末尾,也可以将对象自己添加进来,如:
ArrayList al = new ArrayList();
int[] nums = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, };
al.AddRange(nums);
al.AddRange(al);
Remove方法:从动态数组中删除指定元素(第一次出现的那个元素)。
->如果要删除的元素没有在动态数组当中,程序将一闪而过,不做任何操作。
RemoveAt方法:删除指定索引处的元素(同样是第一次出现的元素)。
->如果要删除的元素索引超出动态数组长度,会报异常:索引超出异常,必须为非负值并且小于索引大小。
->Remove调用了IndexOf方法
Clear方法:清空所有元素。
排序方法:Sort方法:正序排;Reverse方法:反序排。
Clone方法:创建一个副本(浅表副本),例如:
->ArrayList al2 = (ArrayList)al.Clone();
Insert方法:将元素插入指定索引处;
IndexOf方法:获取动态数组中指定元素的索引;
Contains方法:确定某个元素是否存在(通常用if-else进行判断);
ToArray方法:将动态数组中的所有元素复制到一个新数组中,例如:
->int[ ] nums = (int[ ])al.ToArray(typeof(int)); //把al转换为int数组
三、Hashtable类
Hashtable类表示哈希表,是一个键/值对的集合,键/值对根据键的哈希代码进行组织。键作为查找的索引,值代表需要的数据。
重要特征:键值不允许重复
遍历哈希数组的方法:foreach(var temp in ht) //不建议使用var,这里只是使用var来暂时查看temp的类型
例如:
Hashtable ht = new Hashtable();
ht.Add("zhang","1234");
ht.Add("li","3466");
foreach (DictionaryEntry temp in ht)
{
Console.WriteLine(temp.Key+" "+ temp.Value);
}
哈希表的常用属性(Count,Items)和方法(Add,Remove,Clear)与ArrayList类的类似,特别的属性与方法如下:
常用属性:
Keys属性:获取哈希表中的键的集合;
Values属性:获取哈希表中的值的集合
常用方法:
ContainsKey方法:判断哈希表中是否包含特定键;
ContainsValue方法:判断哈希表中是否包含特定值,例如:
->
Hashtable ht = new Hashtable();
ht.Add("zhang","1234");
ht.Add("li","3466");
Console.WriteLine(ht["zhang"]);
if (ht.ContainsKey("li"))
{
Console.WriteLine(ht["li"]);
}
else
{
Console.WriteLine("none");
}
*另外:ArrayList类对应的泛型类是List,使用方法几乎相同,只不过实例化时必须使用泛型类的实例化方法;
Hashtable类对应的泛型类是Dictionary。