您的位置:首页 > 其它

Array类知识点和思考练习,及书里发现的错误

2009-09-20 23:47 323 查看
知识点

Array.CreateInstance 方法 用于 初始化 Array 类的新实例。
Array.CreateInstance (Type, Int32)    创建使用从零开始的索引、具有指定 Type 和长度的一维 Array。这里的Type显然就可以用typeof(long)等方式替换。
(注:CreateInstance 有很多重载方法,以后需继续深入)

System.Array类的属性常用的有
Length 获得一个 32 位整数,该整数表示 Array 的所有维数中元素的总数。
Rank 获取 Array 的秩(维数)。
常用的方法有
Clear 静态方法 将 Array 中的一系列元素设置为零、false 或 空引用,具体取决于元素类型。
public static void Clear (
    Array array,
    int index,
    int length
)
Copy 静态方法 已重载。 将一个 Array 的一部分元素复制到另一个 Array 中,并根据需要执行类型强制转换和装箱。
Array.Copy (Array, Array, Int32)  从第一个元素开始复制 Array 中的一系列元素,将它们粘贴到另一 Array 中(从第一个元素开始)。长度指定为 32 位整数。 
public static void Copy (
    Array sourceArray,
    Array destinationArray,
    int length
)

CopyTo 已重载。 将当前一维 Array 的所有元素复制到指定的一维 Array 中。
Array.CopyTo (Array, Int32)  将当前一维 Array 的所有元素复制到指定的一维 Array 中(从指定的目标 Array 索引开始)。索引指定为 32 位整数。 
public void CopyTo (
    Array array,
    int index
)

CreateInstance 静态方法 已重载。 初始化 Array 类的新实例。
Array.CreateInstance (Type, Int32)  创建使用从零开始的索引、具有指定 Type 和长度的一维 Array。 
public static Array CreateInstance (
    Type elementType,
    int length
)

Equals 已重载。 确定两个 Object 实例是否相等。 (从 Object 继承。)
Object.Equals (Object)  确定指定的 Object 是否等于当前的 Object。 
public virtual bool Equals (
    Object obj
)

GetLength 获取一个 32 位整数,该整数表示 Array 的指定维中的元素数。
public int GetLength (
    int dimension
)

GetLowerBound 获取 Array 中指定维度的下限。
public int GetLowerBound (
    int dimension
)

GetUpperBound 获取 Array 的指定维度的上限。
public int GetUpperBound (
    int dimension
)

GetValue 已重载。 获取当前 Array 中指定元素的值。
Array.GetValue (Int32)  获取一维 Array 中指定位置的值。索引指定为 32 位整数。
public Object GetValue (
    int index
)

IndexOf 静态方法 已重载。 返回一维 Array 或部分 Array 中某个值第一个匹配项的索引。
Array.IndexOf (Array, Object)  搜索指定的对象,并返回整个一维 Array 中第一个匹配项的索引。 
public static int IndexOf (
    Array array,
    Object value
)
Array.IndexOf (Array, Object, Int32)  搜索指定的对象,并返回一维 Array 中从指定索引到最后一个元素这部分元素中第一个匹配项的索引。
public static int IndexOf (
    Array array,
    Object value,
    int startIndex
)
Array.IndexOf (Array, Object, Int32, Int32)  搜索指定的对象,并返回一维 Array 中从指定索引开始包含指定个元素的这部分元素中第一个匹配项的索引。
public static int IndexOf (
    Array array,
    Object value,
    int startIndex,
    int count
)
LastIndexOf 静态方法 已重载。 返回一维 Array 或部分 Array 中某个值的最后一个匹配项的索引。
Array.LastIndexOf (Array, Object)  搜索指定的对象,并返回整个一维 Array 中最后一个匹配项的索引。 
Array.LastIndexOf (Array, Object, Int32)  搜索指定的对象,并返回一维 Array 中从第一个元素到指定索引这部分元素中最后一个匹配项的索引。 
Array.LastIndexOf (Array, Object, Int32, Int32)  搜索指定的对象,并返回一维 Array 中到指定索引为止包含指定个元素的这部分元素中最后一个匹配项的索引。 
具体方法参数与IndexOf相似

Resize 静态方法 将数组的大小更改为指定的新大小。
public static void Resize<T> (
    ref T[] array,
    int newSize
)
此处存留疑问,<T>代表什么?
如:Array.Resize(ref myArr, myArr.Length + 5);
    Array.Resize(ref myArr, 4);

Reverse 静态方法 已重载。 反转一维 Array 或部分 Array 中元素的顺序。
Array.Reverse (Array)  反转整个一维 Array 中元素的顺序。
public static void Reverse (
    Array array
)
Array.Reverse (Array, Int32, Int32)  反转一维 Array 中某部分元素的元素顺序。
public static void Reverse (
    Array array,
    int index,
    int length
)

SetValue 已重载。 将当前 Array 中的指定元素设置为指定值。 从参数就可看出,其实元素在C#里都被看做对象,任何变量其实都可以看做是对象(这句话不知道合适不合适,
存留疑问)
Array.SetValue (Object, Int32)  将某值设置给一维 Array 中指定位置的元素。索引指定为 32 位整数。 
public void SetValue (
    Object value,
    int index
)

Sort 静态方法 已重载。 对一维 Array 对象中的元素进行排序。   
Array.Sort (Array)  使用 Array 中每个元素的 IComparable 实现,对整个一维 Array 中的元素进行排序。
public static void Sort (
    Array array
)
此方法重载可以再展开研究一下

ToString 返回表示当前 Object 的 String。 (从 Object 继承。)
public virtual string ToString ()

 

思考练习

using System;
namespace ArrayNameSpace
{
public class ArrayClass
{
static void Main()
{
Array intArray = Array.CreateInstance(typeof(int), 7);
for (int i = 1; i <= 7; i++)
{
intArray.SetValue(i, i - 1);//为数组类各元素(其实也是对象)赋值
}
foreach (int intVar in intArray)
{
Console.WriteLine(intVar);//相当于Console.WriteLine(intVal.ToString());
}
Console.WriteLine("{0}等于{1}吗", intArray.GetLength(0), intArray.Length);
for (int i = 0; i < intArray.GetLength(0); i++)//一维数组时,相当于for(int i=0;i<intArray.Length;i++)
{
Console.WriteLine(intArray.GetValue(i));
}
int[] intVal = new int[] { 1, 2, 3, 4, 5, 6, 7 };//常规的创建实例数组
for (int i = 0; i < 7; i++)//7那个位置在本例中相当于:intVal.Length 或者 intVal.GetLength(0) 维数的计算也从0开始
{
Console.WriteLine(intVal[i]);//常规的数组访问数组内对象元素,都是通过 数组名[i] 来访问,而Array类定义的对象不可以!
//上一句如果改成Console.WriteLine(intArray[i]); 就是错误的了,提示无法将带 []的索引应用于“System.Array”类型的表达式
}
//                      stringArray=stringVal;//常规的数组实例可以隐式转换为Array类的实例,反之则不可
//                      for(int i=0;i<3;i++)
//                      {
//                              Console.WriteLine(stringArray.GetValue(i));
//                      }
if (intVal.Equals(intArray)) Console.WriteLine("intVal.Equals(intArray) 相同");
else Console.WriteLine("intVal.Equals(intArray) 不同");//此时不相同,虽然里面的对象元素都一样
Console.ReadLine();
if (intArray.Equals(intVal)) Console.WriteLine("intArray.Equals(intVal) 相同"); //此时不相同,虽然里面的对象元素都一样
else Console.WriteLine("intArray.Equals(intVal) 不同");
Console.ReadLine();
intVal = (int[])intArray;//想将Array实例转换为常规的数组实例,必须强制转换,采用(数组类型[])的方式。
for (int i = 0; i < 3; i++)
{
Console.WriteLine(intVal[i]);
}
Console.ReadLine();
foreach (int intVar in intVal)//以下代码可行,说明常规的数组元素也都是对象
{
Console.WriteLine(intVar);//相当于Console.WriteLine(intVal.ToString());
}
Console.ReadLine();
if (intVal.Equals(intArray)) Console.WriteLine("intVal.Equals(intArray) 相同");//输出时相同
Console.ReadLine();
if (intArray.Equals(intVal)) Console.WriteLine("intArray.Equals(intVal) 相同");//输出时相同
Console.ReadLine();

}
}
}




书内错误

一些地方应该是R的,却写成了P,这个问题在书中蛮多的,其他地方也有,以后就不在报这个错了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: