使用不安全的数组

使用指针访问数组时,没有边界检查,因此不会抛出 IndexOutOfRangeException。这使代码更快。

使用指针为数组赋值:

class Program
{
    static void Main(string[] args)
    {
        unsafe
        {
            int[] array = new int[1000]; 
            fixed (int* ptr = array)
            {
                for (int i = 0; i < array.Length; i++)
                {
                    *(ptr+i) = i; //assigning the value with the pointer
                }
            }
        }
    }
}

虽然安全和正常的对应方是:

class Program
{
    static void Main(string[] args)
    {            
        int[] array = new int[1000]; 

        for (int i = 0; i < array.Length; i++)
        {
            array[i] = i;
        }
    }
}

不安全的部分通常会更快,并且性能的差异可以根据阵列中元素的复杂性以及应用于每个元素的逻辑而变化。即使它可能更快,但应小心使用,因为它更难维护并且更容易破碎。