首页 > 学院 > 开发设计 > 正文

C#==>Array类

2019-11-17 03:59:00
字体:
来源:转载
供稿:网友

1,Array常用属性 Length 返回元素个数,LongLength 当元素个数超出int型范围时使用,Rank返回数组的维数

2,Array类是一个抽象类,不能使用构造函数来创建数组。

     但可以这样做

view plaincopy to clipboardPRint?
Array iArray = new int[] { 1, 2, 3, 4 };  
for (int i = 0; i < iArray.Length; i++)  
{  
    Console.WriteLine(iArray.GetValue(i));  

Array iArray = new int[] { 1, 2, 3, 4 };
for (int i = 0; i < iArray.Length; i++)
{
    Console.WriteLine(iArray.GetValue(i));
}

    或者使用静态方法CreateInstance,尤其是当事先不知道数组元素类型的时候,可以这样定义数组

    其中SetValue方法用于设定,GetValue方法用于读取

view plaincopy to clipboardprint?
Array array = Array.CreateInstance(typeof(string), 3);  
array.SetValue("Tom", 0);  
array.SetValue("Jack", 1);  
array.SetValue("Bill", 2);  
 
for (int i = 0; i < array.Length; i++)  
{  
    Console.WriteLine(array.GetValue(i));     

            Array array = Array.CreateInstance(typeof(string), 3);
            array.SetValue("Tom", 0);
            array.SetValue("Jack", 1);
            array.SetValue("Bill", 2);

            for (int i = 0; i < array.Length; i++)
            {
                Console.WriteLine(array.GetValue(i));  
            }

※该方法还可以用于创建多维数组

3,数组的复制,使用Clone()方法,

     如果数组元素是值类型的,就会复制所有的值,

     如果数组元素是引用类型,就复制引用

     ※ 如果需要包含引用类型的数组的深副本就必须迭代数组,创建新对象

为了说明引用类型的复制,见下类

view plaincopy to clipboardprint?
public class Person  
{  
    public string FirstName { get; set; }  
    public string LastName { get; set; }  
 
    public Person(string FirstName, string LastName)  
    {  
        //参数与类的成员同名的时,用this指代类成员(个人建议最好不这样用)  
        this.FirstName = FirstName;  
        this.LastName = LastName;  
    }  
 
    //重写ToString类  
    public override string ToString()  
    {  
        return string.Format("{0} {1}", FirstName, LastName);  
    }  
}  
 
 
class Program  
{  
    static void Main(string[] args)   
    {  
        Person[] persons1 = new Person[2];  
        persons1[0] = new Person("Tom", "lin");  
        persons1[1] = new Person("Jack", "Rader");  
 
        Person[] persons2 = persons1.Clone() as Person[];  
 
        persons2[0].FirstName = "复制2";  
 
        //调用复制源数组  
        Console.WriteLine(persons1[0].FirstName);  
          
        //结果为 复制2,而不是Tom,可见Clone方法仅仅复制了引用  
 
        Console.Read();  
    }  

    public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }

        public Person(string FirstName, string LastName)
        {
            //参数与类的成员同名的时,用this指代类成员(个人建议最好不这样用)
            this.FirstName = FirstName;
            this.LastName = LastName;
        }

        //重写ToString类
        public override string ToString()
        {
            return string.Format("{0} {1}", FirstName, LastName);
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
            Person[] persons1 = new Person[2];
            persons1[0] = new Person("Tom", "lin");
            persons1[1] = new Person("Jack", "Rader");

            Person[] persons2 = persons1.Clone() as Person[];

            persons2[0].FirstName = "复制2";

            //调用复制源数组
            Console.WriteLine(persons1[0].FirstName);
           
            //结果为 复制2,而不是Tom,可见Clone方法仅仅复制了引用

            Console.Read();
        }
    }

3,Array类也实现了数组中元素的冒泡排序,Sort方法.

    对于简单的数组可以直接排序
    Array.Sort(iArray);   其中, iArray为一个int型数组


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表