【问题标题】:2D object array c sharp dynamic value allocation二维对象数组 c 锐利的动态值分配
【发布时间】: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);表示索引超出了数组的范围。

标签: c# arrays object definition


【解决方案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;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-03
    • 2015-02-10
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 2015-06-10
    • 2014-07-19
    相关资源
    最近更新 更多