如何达到嵌套在对象中的对象的值?

How to reach the value of an object nested within an object?

提问人:Douar Gwenn 提问时间:8/2/2023 最后编辑:Douar Gwenn 更新时间:8/2/2023 访问量:82

问:

我正在以某种方式生成一个包含另一个对象结构的 C# 对象。我不确定如何掌握它的内容。

我有一个数组,其值为

{object[1,1]} 

和类型

object[,] 

如果我展开它,我会得到:

arr[0,0] 

有价值

{object[1..1]} 

和类型

object{object[]}

和一个讲述的结构

[1] 

有价值(为了论证)

myString 

和类型

object{string}

我不确定如何获取我正在搜索的封装字符串 myString。

从“监视”窗口((-)表示我展开了切换点 (+)):

    Name            Value             Type
(-) arr            {object[1,1]}      object[,]
 L  (-) [0,0]      {object[1..1]}     object{object[]}
     L  [1]        "myString"         object{string}

arr[0,0][1]        Cannot apply indexing with [] to an  expression of type 'object'
C# Visual-Studio 对象 装箱

评论

1赞 Dai 8/2/2023
{object[1,1]}并且不是有效的 C# 类型 - 请发布足够的代码,以便我们可以复制、粘贴并运行来演示问题。object{object[]}
1赞 Dai 8/2/2023
“如果我展开它,我会得到:” - 你说的“展开”到底是什么意思?这不是 C#/.NET 中的术语。
0赞 Douar Gwenn 8/2/2023
@Dai。好吧,这就是我调试和运行“监视”窗口时得到的。展开意味着我在“监视”窗口中切换打开结构的元素。一个标准对象[,],我进入监视窗口
0赞 Rand Random 8/2/2023
您能否共享您尝试在 Visual Studio 中检查的对象的实例,因为我没有看到问题:i.stack.imgur.com/l1CuX.png
0赞 Douar Gwenn 8/2/2023
展开意味着我在“监视”窗口中切换打开结构的元素。1) 对于名为 arr1 的 object[,]类型的“标准”数组,在监视窗口中,我得到值 {object[1,1]} 和 object[,] 类型。如果我切换,我会得到 arr1[0,0],值为“myString”并键入 object{string}。2) 对于名为 arr2 的 object[,]类型的“非标准”数组,在监视窗口中,我得到值 {object[1,1]} 并键入 object[,]。如果我切换,我会得到 arr2[0,0],值为 {object[1..1]},类型为 object{object[]},还有一个缩进的切换 [1],值为“myString”,类型为 object{string}。

答:

0赞 Rand Random 8/2/2023 #1

根据您上次的编辑,您的数组似乎是这样的:

//an array with length 1 and index starts with 1 instead of 0
var mySpecialArray = Array.CreateInstance(typeof(object), new [] { 1 }, new [] { 1 });
mySpecialArray.SetValue("myString", 1);

var objArray = new object[,]
{
    {mySpecialArray},
};

enter image description here

若要获取代码背后的值,可以使用此myString

Console.WriteLine(((Array)objArray[0,0]).GetValue(1));

objArray[0,0][1]将不起作用,因为您没有强制转换为它所在的类型(数组),您不能在 type 的实例上使用objArray[0,0][1]object

Visual Studio 正在 Inside Magic 中执行,并将在内部执行强制转换以访问[1]

在这里你可以找到一个演示:

https://dotnetfiddle.net/VHFPmv

评论

1赞 Douar Gwenn 8/2/2023
它就像一个魅力!你非常勤奋。非常感谢您非常迅速和有见地的回答。我非常感谢。