如何获取C#中嵌套多层对象结构内的目标字符串值?
C#嵌套对象数组取值方案
你遇到的问题是因为arr[0,0]的编译时类型是object,而非数组类型,所以无法直接使用[]索引。需要先将其转换为对应的数组类型,再访问内部元素,最后转换为字符串。
直接转换方式
如果能确定arr[0,0]肯定是object[]且索引1的元素是字符串,可以用强制转换:
// 先转成object[],再取索引1,最后转成string string myString = (string)((object[])arr[0,0])[1];
或者用as运算符,转换失败时返回null而非抛出异常:
string myString = ((object[])arr[0,0])[1] as string;
安全检查方式
如果不确定内部结构,建议先做类型和长度检查,避免运行时异常:
string myString = null; // 先判断arr[0,0]是否为object[] if (arr[0,0] is object[] innerArray) { // 检查数组长度足够,且元素是字符串 if (innerArray.Length > 1 && innerArray[1] is string targetStr) { myString = targetStr; } }
内容的提问来源于stack exchange,提问作者Douar Gwenn
相关产品推荐
相关产品推荐

