数组大小也是可以更改的

                Array.Resize 泛型方法-----将数组的大小更改为指定的新大小。

  今天没事翻翻书,无意中看见了这个方法,我还以为数组的大小是不可改变的,定义多大就多大。今天才发现可以改变大小。

  MSDN上面的解释是: 

此方法分配一个具有指定大小的新数组,将元素从旧数组复制到新数组,然后用新数组替换旧数组。

如果 array 为空引用(在 Visual Basic 中为 Nothing),此方法将新建具有指定大小的数组。

如果 newSize 大于旧数组的 Length,则分配一个新数组,并将所有元素从旧数组复制到新数组。如果 newSize 小于旧数组的 Length,则分配一个新数组,并将元素从旧数组复制到新数组直到新数组被填满为止;旧数组中的剩余元素将被忽略。如果 newSize 与旧数组的 Length 相等,则此方法不执行任何操作。

此方法为 O(n) 操作,其中 nnewSize

 没事写了个测试程序:

 这个方法最好少用,它会开辟新的内存并有一个复制的过程。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestResize
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] strs = {
                "one","two","three","four"
            };
            Console.WriteLine("The old array index and value:");
            PrintIndexAndValues(strs);

            Array.Resize(ref strs, 5);
            Console.WriteLine("Resize to 5,The new array index and value:");
            PrintIndexAndValues(strs);

            Array.Resize(ref strs, 1);
            Console.WriteLine("Resize to 1,The new array index and value:");
            PrintIndexAndValues(strs);

            string[] str=null;
            Array.Resize(ref str, 1);
            Console.WriteLine("Resize to 1,The new array index and value:");
            PrintIndexAndValues(str);

            Console.ReadLine();
        }

        public static void PrintIndexAndValues(string[] myArr)
        {
            for (int i = 0; i < myArr.Length; i++)
            {
                Console.WriteLine("   [{0}] : {1}", i, myArr[i]);
            }
            Console.WriteLine();
        }
    }
}

每天成就一小步,积累下来就是一大步。 转发本文请注明出处,谢谢您的阅读与分享!
原文地址:https://www.cnblogs.com/lixiaobin/p/ArrayResize.html