C#列表清单?

如果我有这个:

List<List> matrix = new List<List>(); 

我将如何填充它,使它看起来像这样:

 0 0 0 0 0 0 0 

 0 0 0 0 0 0 0

 0 0 0 0 0 0 0

 List> matrix = new List>(new []{ new List(new []{0, 0, 0, 0, 0, 0, 0}), new List(new []{0, 0, 0, 0, 0, 0, 0}), new List(new []{0, 0, 0, 0, 0, 0, 0})}); 

Arnis L.在这里……

只想添加集合可能会使用初始化程序(如果支持.Net 3.0):

 var matrix = new List>{ new List{0, 0, 0, 0, 0, 0, 0}, new List{0, 0, 0, 0, 0, 0, 0}, new List{0, 0, 0, 0, 0, 0, 0}}; 

首先,如何填充单个List以使其包含零?

你想组成一堆,然后将它们推入包含列表。

我真的会为矩阵避免这种情况。 无法确保每个子列表与其他子列表的长度相同。 如果它不是动态的,那么你应该使用多维数组

 int[,] names = new int[7,3]; 

如果您正在制作矩阵,为什么不使用二维数组呢?

这是初始化不规则列表的一种方法:

 matrix = Enumerable.Repeat(0,3) .Select(d => Enumerable.Repeat(0,7).ToList()) .ToList(); 

您可能不希望使用列表进行矩阵表示,除非矩阵非常稀疏……但是如何创建整数列表? 然后,如果您有其中一个,您将如何将其添加到列表列表中? 您需要将这些列表添加到列表中多少次?

我会去int[,]因为它很可读,对我来说至少……

 int rows; int columns; List> matrix; matrix = new List>(); for (int i = 0; i < rows; i++) { List row; row = new List(); for (int j = 0; j < columns; j++) { row.Add(0); } matrix.Add(row); } 

如果要在矩阵中放置其他内容而不是“0”,只需替换添加到矩阵行的值。 干杯!

我无法抗拒,为什么不使用BitVector? 是否需要使用列表列表才能生成二进制序列? 或者选择0和1; s为例?

http://msdn.microsoft.com/en-us/library/system.collections.specialized.bitvector32.aspx

如果它很稀疏,请考虑使用

 int[][] matrix; 

与使用List相比,这在速度和内存占用方面更有效。

如果您想要一些开放式可读矩阵function,您可以查看Math.Net的Iridium项目 。 它支持稀疏矩阵,并具有大量的矩阵函数。 它的实现只比使用Double [,]稍慢,我已经将它用于具有超过60,000,000个值的矩阵上的函数。