C# 列表的列表(二维矩阵)
我尝试使用列表列表实现二维数组类。有人可以帮我实现一个类似于下面的 T this[int x, int y] 函数的 get 函数,以获取 [int x,:] 给出的列中的所有元素,其中 x 是列。作为数组返回就可以了。
public class Matrix<T>
{
List<List<T>> matrix;
public Matrix()
{
matrix = new List<List<T>>();
}
public void Add(IEnumerable<T> row)
{
List<T> newRow = new List<T>(row);
matrix.Add(newRow);
}
public T this[int x, int y]
{
get { return matrix[y][x]; }
}
}
Im trying to implement a 2D array class using List of Lists. Can someone please help me to implement a get function similar to T this[int x, int y] function below to get all the elements in a column given by [int x,:] where x is the column. Returning as an array would be fine.
public class Matrix<T>
{
List<List<T>> matrix;
public Matrix()
{
matrix = new List<List<T>>();
}
public void Add(IEnumerable<T> row)
{
List<T> newRow = new List<T>(row);
matrix.Add(newRow);
}
public T this[int x, int y]
{
get { return matrix[y][x]; }
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
由于您想要返回的每个值都位于单独的行中,因此位于单独的
List
中,因此您必须迭代所有行列表并返回其中的元素x
行。返回值的数量将始终等于行数,因此您可以:
Since each value you want to return is in a separate row, and so in a separate
List
, you'll have to iterate through all row lists and return elementx
of those rows.The number of values returned will always equal the number of rows, so you could:
或者:
返回矩阵.Select(z=>z.ElementAtOrDefault(x));
Or:
return matrix.Select(z=>z.ElementAtOrDefault(x));
与实例化结果数组相比,yielding 有一些好处,因为它可以更好地控制输出的使用方式。例如 myMatrix[1].ToArray() 会给你一个 double[] 而 myMatrix[1].Take(5).ToArray() 只会实例化一个 double[5]
Yielding has some benefits over instantiating a result array as it gives better control over how the output is used. E.g. myMatrix[1].ToArray() will give you a double[] whereas myMatrix[1].Take(5).ToArray() will only instantiate a double[5]
你必须确保每个矩阵列表至少有 x 个元素
you have to make sure that every lists of matrix have at least x elements