C# 中的 myArray.GetValue(2) 和 myArray[2] 有什么区别?

Jak*_*use 5 c#

使用 myArray.GetValue(2) 和 myArray[2] 有什么区别吗?

例如:

namespace ConsoleApplication16
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] numbers = new int[] { 1, 2, 3, 4 };
            Console.WriteLine(numbers.GetValue(3));
            Console.WriteLine(numbers[3]);
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Sme*_*egs 2

GetValue将返回类型对象,而使用索引将返回数组特定的类型。

您可以在这个小提琴(下面的代码)中看到该变量val1可以存储一个字符串,但val2只能用作整数。

public static void Main()
{
    int[] numbers = new int[]{1, 2, 3, 4};
    var val1 = numbers.GetValue(3);
    var type = val1.GetType();
    var val2 = numbers[3];

    Console.WriteLine(type.ToString());
    val1 = "hello";
    type = val1.GetType();
    Console.WriteLine(type.ToString());
}
Run Code Online (Sandbox Code Playgroud)

这将导致装箱和拆箱,这不会对小代码片段产生影响,但如果大规模使用,可能会影响性能。