首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Obj[,]到Obj[ ]

如何从Obj[,]到Obj[ ]
EN

Stack Overflow用户
提问于 2021-05-11 12:53:26
回答 3查看 57关注 0票数 1

在我的C#项目中,我需要Tile[ , ] make Tile[ ]在一行中迭代。

代码语言:javascript
复制
Tile[,] tiles = playfield.Tiles;
Tile[] center_row = Tile[row / 2]; // does not work

我需要从Tile[ , ] make Tile[ ][ ]还是直接转换它?

更新

我的问题在https://stackoverflow.com/a/32903582/12416559答案的帮助下得到了解决

EN

回答 3

Stack Overflow用户

发布于 2021-05-11 13:12:17

您可以使用BlockCopy将所有数据从一种形式移动到另一种形式。

理论上

下面是作为扩展方法的解决方案

代码语言:javascript
复制
    public static T[] MatrixToVector<T>(this T[,] matrix)
    {
        var size = Buffer.ByteLength(matrix);
        var vector = new T[matrix.Length];
        Buffer.BlockCopy(matrix, 0, vector, 0, size);
        return vector;
    }
    public static T[,] VectorToMatrix<T>(this T[] vector, int rows, int columns)
    {
        var size = Buffer.ByteLength(vector);
        var matrix = new T[rows,columns];
        Buffer.BlockCopy(vector, 0, matrix, 0, size);
        return matrix;
    }

在实践中

数组只能是原语类型。

扑向救援

StackOverflow到援救with a solution

代码语言:javascript
复制
    public static T[] MatrixToVector<T>(this T[,] matrix)
    {
        var vector = matrix.Cast<T>().ToArray();
        return vector;
    }
票数 1
EN

Stack Overflow用户

发布于 2021-05-11 13:01:31

你喜欢UnityEngine,我明白吗?:)

好的,您可以使用Buffer.BlockCopy方法,如解释的here

票数 0
EN

Stack Overflow用户

发布于 2021-05-11 13:07:58

如果迭代是您想要的,那么您可以从它获得IEnumerator,只需迭代:

代码语言:javascript
复制
int[,] res = new int[2, 2]
    {
        {1,2 },
        {33,45 }
    };

var enumerator = res.GetEnumerator();

while (enumerator.MoveNext())
{
    Console.WriteLine(enumerator.Current);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67487166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档