8
CLR使用不同的System.Type
實例來表示SZ陣列(一維,零基,aka向量)和非零基陣列(即使它們是一維)。我需要一個函數,它需要一個System.Type
的實例並識別它是否代表SZ數組。我能夠使用GetArrayRank()
方法檢查排名,但不知道如何檢查它是否爲零。你能幫我嗎?如何識別代表SZ陣列的System.Type實例?
using System;
class Program
{
static void Main()
{
var type1 = typeof (int[]);
var type2 = Array.CreateInstance(typeof (int), new[] {1}, new[] {1}).GetType();
Console.WriteLine(type1 == type2); // False
Console.WriteLine(IsSingleDimensionalZeroBasedArray(type1)); // True
Console.WriteLine(IsSingleDimensionalZeroBasedArray(type2)); // This should be False
}
static bool IsSingleDimensionalZeroBasedArray(Type type)
{
// How do I fix this implementation?
return type != null && type.IsArray && type.GetArrayRank() == 1;
}
}