二维对象数组 c 锐利的动态值分配
Posted
技术标签:
【中文标题】二维对象数组 c 锐利的动态值分配【英文标题】:2D object array c sharp dynamic value allocation 【发布时间】:2020-08-18 13:20:02 【问题描述】:我已经初始化了一个动态大小的二维对象数组,如下所示;
header.Value2 = new object[,]
"col1", "col1", "col1", "col1", "col1", "col1", "col1", "col1", "col1"
;
有什么方法可以动态设置内部对象 "col1",""....... 使用变量如下:
Object newobj = "col1", "col1", "col1", "col1", "col1", "col1", "col1", "col1", "col1" ;
header.Value2 = new object[,]
newobj
;
【问题讨论】:
您可以调用header.Value2.SetValue(newobj, 0, 0);
请注意,这将放置从 arr[0,0] 开始的新元素,如果内部数组的长度比传递的数组短,它将覆盖arr[1, n] 也是
对象不包含“SetValue”的定义,并且找不到接受对象类型的第一个参数的可访问扩展方法“SetValue”
object Value2 get;放;
((object[,])header.Value2).SetValue(newobj, 0, 0);
?
对象 newobj = new object[,] “col1”, “col1”, “col1”, “col1”, “col1”, “col1”, “col1”, “col1”, "col1" ; ((object[,])header.Value2).SetValue(newobj, 0, 0);表示索引超出了数组的范围。
【参考方案1】:
我认为可能存在一些误解。
header.Value2 = new object[,]
"col1", "col1", "col1", "col1", "col1", "col1", "col1", "col1", "col1"
;
这声明了一个固定大小的二维数组,一列九行。没有“内在对象”。您可能会想到jagged arrays,即object[][]
,因为它的每一行都有一个单独的对象。
如果要将一维数组转换为二维数组,只需编写一个方法即可:
public static T[,] To2DColumn<T>(T[] source)
var result = new T[1, source.Length];
for (int i = 0; i < source.Length; i++)
result[0, i] = source[i];
return result;
【讨论】:
以上是关于二维对象数组 c 锐利的动态值分配的主要内容,如果未能解决你的问题,请参考以下文章