如何返回int数组C#

时间:2015-03-30 17:59:25

标签: c# arrays return

我学习了c#,我的功能有问题。 它应该将选项卡数组的元素乘以mnoznik并返回输出选项卡,我尝试了很多方法,但仍然不知道如何解决它。

    static int mnozenie(int[] tab, int mnoznik)
    {
        int[] wyj;
        wyj = new int[tab.Length];
        if (mnoznik != 0)
        {
            for (int i = 0; i < tab.Length; i++)
                wyj[i] = tab[i] * mnoznik;
            return wyj[];
        }
        else
            return 0;
    }

5 个答案:

答案 0 :(得分:3)

尝试

static int[] mnozenie(int[] tab, int mnoznik)
{
    int[] wyj = new int[tab.Length];
    if (mnoznik != 0)
    {
        for (int i = 0; i < tab.Length; i++)
            wyj[i] = tab[i] * mnoznik;
    }
    return wyj;

}

答案 1 :(得分:0)

您尝试返回数组和整数,这是您无法做到的。你可以将它全部包装在一个元组&lt;,&gt;中。并且返回两者,或者在mnoznik为0的情况下你可以返回null。

类似的东西:

static Tuple<bool,int[]> mnozenie(int[] tab, int mnoznik)
{
    return (mnoznik == 0)
           ? new Tuple<bool,int[]>(false, new [] { 0 })
           : new Tuple<bool,int[]>(true, tab.Select(i => i*mnoznik).ToArray());
}

static int mnozenie(int[] tab, int mnoznik)
{
    return (mnoznik == 0)
           ? null
           : tab.Select(i => i*mnoznik).ToArray();
}

答案 2 :(得分:0)

static int[] mnozenie(int[] tab, int mnoznik)
{
    if (tab.Length > 0)
    {
        for (int i = 0; i < tab.Length; i++)
        {
            tab[i] *= mnoznik;
        }
        return tab;
    }
    return null;
}

或者替代返回null只返回tabif块只是防止尝试访问空集合,或者只是以您选择的任何方式处理异常。

答案 3 :(得分:0)

此代码可以帮助您 试试吧

   static int[] m(int[] a , int low , int big) 
      {
        int[] re = new int[2];
        int min, max, mid ;
        if (low == big)
        {
            min = max = a[low];
            re[0] = min;
            re[1] = max;
            return (re);
        }
      }

答案 4 :(得分:0)

如果我错了,请纠正我,但我有 90% 的把握,以防在 c#/c++ 中返回数组或任何类型的元素。编译器实际上并没有实际移动值本身,在堆栈中从一个内存位置到另一个内存位置,它只是将指针/句柄推送到该特定内存,信息存储在堆栈中。

通过指定

<块引用>

返回 wyj[];

您实际上是在尝试返回数组本身,而不是指针。这将是非法的,但我只是删除了方括号,您正在移动指针并且编译器是happycamper。 [编辑:遗漏的话]