C#反思:如何获取数组的值和长度?FieldInfo[]fields=typeof(MyDictionary).GetFields();MyDictionary是一个静态类,所有字段都是字符串数组。如何获取每个数组的长度值,然后遍历所有元素?我试过cast:fieldasArray但它导致错误Cannotconverttype'System.Reflection.FieldInfo'to'System.Array'viareferenceconversion,boxingconversion,unboxingconversion,newlineconversionornulltypeconversion编辑:请注意你have是一个反射对象,而不是与您自己的类关联的对象或值。换句话说,您拥有的那些FieldInfo对象对于您的类的所有实例都是通用的。获取字符串数组的唯一方法是使用这些FieldInfo对象来获取类的特定实例的字段值。为此,您使用FieldInfo.GetValue。它将字段的值作为对象返回。现在您已经知道它们是字符串数组,简化:如果该字段是静态的,请为下面的obj参数传递null。foreach(varfiinfields){string[]arr=(string[])fi.GetValue(obj);...此处正常处理数组}如果您想要只处理字符串数组的字符串:foreach(varfiinfields){if(fi.FieldType==typeof(string[])){string[]arr=(字符串[])fi.GetValue(obj);...在这里正常处理数组}}举个例子:usingSystem;使用System.Reflection;namespaceConsoleApplication1{publicstaticclassMyDictionary{publicstaticint[]intArray=newint[]{0,1,2};publicstaticstring[]stringArray=newstring[]{“零”,“一”,“二”};}staticclassProgram{staticvoidMain(string[]args){FieldInfo[]fields=typeof(MyDictionary).GetFields();foreach(字段中的FieldInfo字段){if(field.FieldType.IsArray){Arrayarray=field.GetValue(null)asArray;Console.WriteLine("类型:"+array.GetType().GetElementType().ToString());Console.WriteLine("长度:"+array.Length.ToString());Console.WriteLine("值");Console.WriteLine("------");foreach(变量元素数组中的t)Console.WriteLine(element.ToString());}控制台.WriteLine();}控制台.Readline();}}}像这样:长度?如果分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注——FieldInfo[]fields=typeof(MyDictionary).GetFields();foreach(字段中的FieldInfo信息){string[]item=(string[])info.GetValue(null);Console.WriteLine("数组包含{0}项:",item.Length);foreach(stringsinitem){Console.WriteLine(""+s);}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
