在一行中初始化并返回锯齿状数组

时间:2014-01-16 05:30:25

标签: c# arrays multidimensional-array jagged-arrays

目前我正在这样做

public int[][] SomeMethod()
{
    if (SomeCondition)
    {
        var result = new int[0][];
        result[0] = new int[0];
        return result;
    }
    // Other code,
}

现在在这里我只想返回空的锯齿状数组[0] [0]。是否可以将三行减少为一行。我希望实现这样的目标

public int[][] SomeMethod()
{
    if (SomeCondition)
    {
        return new int[0][0];
    }
    // Other code,
}

有可能吗?

4 个答案:

答案 0 :(得分:1)

在一般情况下,您可以让编译器为您计算元素:

    public int[][] JaggedInts()
    {
        return new int[][] { new[] { 1, 2, 3 }, new[] { 4, 5, 6 }, new[] { 7, 8, 9, 10 } };
    }

或者,如果您想要它非常紧凑,请使用表达式主体:

 public int[][] JaggedInts() => new int[][] { new[] { 1, 2, 3 }, new[] { 4, 5, 6 }, new[] { 7, 8, 9, 10 } };

由于你要求一个空的锯齿状数组,你已经拥有了它:

var result = new int[0][];

你问题的下一行会抛出一个运行时异常,因为[0]是数组中的第一个元素,它必须是1个或更多个元素的长度;

 result[0] = new int[0];  // thows IndexOutOfRangeException: Index was outside the bounds of the array.

以下是我认为您只需要一行的内容:

public int[][] Empty() => new int[0][];

答案 1 :(得分:0)

试试这个示例页面。希望有所帮助

Jagged Array in C#

答案 2 :(得分:0)

请在https://stackoverflow.com/a/1739058/586754及以下查看。

您将需要创建一些辅助函数,然后它变成一个单行。

(也正在寻找一个解决方案。)

答案 3 :(得分:0)

通过返回jagged数组的值,它给你一些模糊的结果,如果你想返回一些特定的jagged数组索引的特定值,你可以通过将它们赋值给变量来返回

 public static int  aaa()
    {

        int[][] a = new int[2][] { new int[] { 1, 2 }, new int[] { 3, 4 } };
        int abbb=a[0][0];
        Console.WriteLine(a[0][0]);
        return abbb;
    }

以下代码将返回1 becoz这是锯齿状数组的第一个元素