动态创建数组并在c#中进行比较

时间:2014-03-03 05:17:57

标签: c# arrays for-loop

我的基本要求是比较一些字符串数组,然后找出它们是否相同。

基本上我会得到一个计数,并根据该计数我需要动态创建数组。

例如我的查询计数为2,所以我需要创建2个数组并访问for循环中的数组

与计数2相似

Arrays: string[] array0 = new string[100];
string[] array1 = new string[100];

并且在for循环中我需要在索引为0时访问array0并在index的值为1时访问array1

here count = 2 suppose.
for (int i = 0 ;i <count;i++)
{
   when 0 then access array0 and when 1 then access array1
}

但是我无法通过这种方式获得array0和array1的引用。任何人都可以指导我正确的方向。

感谢。

5 个答案:

答案 0 :(得分:3)

尝试将数组存储在Array

string[][] AllMyArrays = new string[][count];
for (int i  = 0; i < count; i++)
    AllMyArrays[i] = new string[100];

这样你可以将它们编入索引整体数组

答案 1 :(得分:2)

这些方面的某些内容应该有效(未经测试,用texteditor编写)

    public static void Main()
    {
        var arrays = GetArrays(5);
        var equal = true;

        for (int i = 0; i < arrays.Count(); i++)
        {
            for (int j = 0; j < arrays.Count(); j++)
            {
                if (!arrays[i].SequenceEqual(arrays[j]))
                {
                    equal = false;
                    break;
                }
            }

            if (!equal)
            {
                break;
            }
        }

        Console.WriteLine("The arrays {0} equal.", equal ? "are" : "are not");
    }

    public static IList<string[]> GetArrays(int count)
    {
        Func<int, string[]> generateArray = x => Enumerable.Range(0, 100).Select(y => y.ToString()).ToArray();
        return Enumerable.Range(0, count).Select(generateArray).ToList();
    }

答案 2 :(得分:0)

您可以使用字符串数组字符串列表。

List<List<string>> lstOfList = new List<List<string>>();

int count = 2;
for (int i = 0 ;i <count;i++)
{
  lstOfList[count-1] would give you second list 
}

答案 3 :(得分:0)

如果我正确理解您的问题,您希望分配任意数量的string[]List适用于此任务。

  const int arrayLength = 100;
  var arrayCount = 4; // or whatever you collect from input

  List<string[]> stringArrays = new List<string[]>();
  for (int i = 0; i < arrayCount; i++) {
    stringArrays.Add(new string[arrayLength]);
  }

就你的要求的第二部分而言,我承认我并不是100%明白你对“发现它们是否相同”的意思。我试图绕过它,但你的陈述太模糊了。但这应该让你走上正轨。 :)

编辑:

将Shenku的解决方案改编为我相信如果它们“相同”的测试要求。

  const int arrayLength = 100;
  var arrayCount = 4; 

  var arrays = new List<string[]>();
  for (var i = 0; i < arrayCount; i++) {
    arrays.Add(new string[arrayLength]); 
  }

  bool equivalent = true;
  for (var i = 0; equivalent && (i < arrayCount - 1); i++) {
    equivalent = arrays[i].SequenceEqual(arrays[i + 1]);
  }

equivalent存储所有数组是否相同。它由SequenceEqual()的{​​{3}}确定。如果这对您不起作用,则应该有the definition

答案 4 :(得分:-1)

int count=2;

//create arrays dynamically
string[] array1 = new string[count];
array1[0]=1;
array1[1]=2; 

//access array using for loop
for (int i = 0 ;i <count;i++)
{
  Console.WriteLine(array[i]); 
  Console.ReadKey();
}