CLR は、個別のSystem.Type
インスタンスを使用して、SZ 配列 (1 次元、ゼロベース、別名ベクトル) および非ゼロベースの配列 (それらが 1 次元であっても) を表します。のインスタンスを取り、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;
}
}