我想调整我的数组动态。一切都会好的,但在例子中我发现有人使用Array.Resize()来调整一个维度数组的大小,但我希望有可能创建锯齿状数组。我从文件行读取,其中可能是一些空格分开的数字 - 因此我需要创建动态的锯齿状数组。 当我使用它时,这是我的课,但我的数组不会调整大小:(
class Program
{
int[][] nodesMatrix = null;
private void ReadFromFile(string fileName)
{
string line;
int nodesNr;
if(File.Exists(fileName) )
{
StreamReader fileReader = null;
try
{
fileReader = new StreamReader(fileName);
int lineNr = 0;
while ((line = fileReader.ReadLine()) != null)
{
int connectionsNr = 0;
if (lineNr==0)
{
nodesNr = Convert.ToInt32(line);
nodesMatrix = new int[nodesNr][];
for (int i = 0; i < nodesNr;i++ )
{
nodesMatrix[i] = new int[1];
}
}
else
{
string tmpNumber = null;
foreach (char sign in line)
{
if (sign != ' ')
{
tmpNumber += sign;
}
if (sign == ' ')
{
if (tmpNumber != null)
{
//nodesMatrix[lineNr] = new int[connectionsNr+1];
nodesMatrix[lineNr][connectionsNr] = Convert.ToInt32(tmpNumber);
connectionsNr++;
Array.Resize<int>(ref nodesMatrix[lineNr], connectionsNr); //here i try to resize array
}
tmpNumber = null;
}
}
}
lineNr++;
}
}
finally
{
if (fileReader != null)
fileReader.Close();
}
}
也许你知道该怎么做?
答案 0 :(得分:4)
也许我不理解你的用例,但在我看来,如果你有一个你知道需要调整大小的数据结构,那么最好使用List或相关结构,而不是数组。您始终可以通过linq添加的.ToArray()扩展名将列表转换回数组。
同样,如果您使用泛型,则可以确保您具有强类型的多维列表。你也可以在内部使用一对列表,并创建自己的类来包装它们。
答案 1 :(得分:1)
我不明白你为什么要在这里使用数组而不是自动调整大小的集合,但是看看MSDN上的这个链接,它显示了“调整大小”并在C#中使用了锯齿状数组: