![](/img/trans.png)
[英]How do I get ConfigurationSection property as a System.Type
[英]How do I recognize a System.Type instance representing SZ-Array?
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;
}
}
static bool IsSingleDimensionalZeroBasedArray(Type type)
{
return type != null && type.IsArray && type == type.GetElementType().MakeArrayType();
}
比上面更快,沒有觸摸類型系統,只使用類型的名稱
public static bool IsSzArray( this Type type ) {
if ( type != null && type.IsArray ) {
string name = type.Name;
int len = name.Length;
return len > 2 && name[ len - 2 ] == '[';
}
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.