CLR 使用不同的System.Type
实例来表示 SZ 数组(一维、从零开始,也称为向量)和非从零开始的数组(即使它们是一维的)。我需要一个函数,它接受一个实例System.Type
并识别它是否代表一个 SZ 数组。我能够使用GetArrayRank()
方法检查排名,但不知道如何检查它是否从零开始。你能帮帮我吗?
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;
}
}