从该c#函数获取字符串值列表:

从该c#函数获取字符串值列表:,c#,C#,我一直在想办法解决这个问题,但一直没有奏效: 这个函数返回一个列表,但我似乎无法读取列表中每个对象的值 以下是所讨论的功能: private static List<object> GetCrossProduct(object[][] arrays) { var results = new List<object>(); GetCrossProduct(results, arrays, 0, new object[array

我一直在想办法解决这个问题,但一直没有奏效:

这个函数返回一个列表,但我似乎无法读取列表中每个对象的值

以下是所讨论的功能:

    private static List<object> GetCrossProduct(object[][] arrays)
    {
        var results = new List<object>();
        GetCrossProduct(results, arrays, 0, new object[arrays.Length]);
        return results;
    }

    private static void GetCrossProduct(ICollection<object> results, object[][] arrays, int depth, object[] current)
    {
        for (var i = 0; i < arrays[depth].Length; i++)
        {
            current[depth] = arrays[depth][i];
            if (depth < arrays.Length - 1)
                GetCrossProduct(results, arrays, depth + 1, current);
            else
                results.Add(current.ToList());
        }
    }
私有静态列表GetCrossProduct(对象[][]数组)
{
var results=新列表();
GetCrossProduct(结果、数组、0、新对象[arrays.Length]);
返回结果;
}
私有静态void GetCrossProduct(ICollection结果、对象[][]数组、int深度、对象[]当前)
{
对于(var i=0;i
您遇到了问题,因为您可能希望看到一个线性的
列表,而实际上它是
列表的
列表

要访问结果中的元素,需要执行以下操作:

var resultingList = GetCrossProduct(blargh); // where blargh is the array you passed in
foreach (IList<object> innerList in resultingList)
{
    foreach (var listValue in innerList)
    {
        // listValues should be the individual strings, do whatever with them
        // e.g.
        Console.Out.WriteLine(listValue);
    }
}

这将创建一个新列表并将其添加到结果列表中。

为什么它会返回某些内容?您的函数既没有返回类型,也没有输出参数。。它将始终返回为
new List()
您能更清楚一些吗?有什么问题?您正在调用GetCrossProduct()?你在传递什么参数?当你需要返回字符串[][]数组的叉积时,它是一个递归函数。该列表返回对象列表中出现的内容(每个对象都有我需要的字符串)例如:我在提取对象中的值时遇到了很多麻烦(John,Red,Apple)在递归调用中传递
current
的目的是什么?看起来它应该包含
数组[depth]
的所有元素,不是吗?哇,非常感谢,我现在看到了。递归函数将结果添加到正在返回的列表中的新列表中。再次感谢你的帮助。
results.Add(current.ToList());