无法将int类型隐式转换为int []

时间:2016-05-23 10:58:54

标签: c#

我不知道为什么我在最后一行中提出了以下CS0029错误(返回dmin)。它告诉我,我不能隐式地将int类型转换为int []:

private static int[] MinDistance(int[] sortedArray)
    {
        int dmin = int.MaxValue;

        int length = sortedArray.Length;
        for (int i = 0; i < length - 1; i++)
        {

            for (int j = 0; j < length - 1 - i; j++)
            {

                if (sortedArray[i] != sortedArray[j] && Math.Abs(i - j) < dmin) 
                {

                    dmin = Math.Abs(i - j);

                }
            }
        }
        return dmin;

4 个答案:

答案 0 :(得分:0)

dmin是一个Int,但MinDistance返回一个int(int [])数组。如果您需要int而不是数组,请将第一行更改为:

private static int MinDistance(int[] sortedArray)

答案 1 :(得分:0)

更改您的代码

private static int MinDistance(int[] sortedArray)
    {
        int dmin = int.MaxValue;

    int length = sortedArray.Length;
    for (int i = 0; i < length - 1; i++)
    {

        for (int j = 0; j < length - 1 - i; j++)
        {

            if (sortedArray[i] != sortedArray[j] && Math.Abs(i - j) < dmin) 
            {

                dmin = Math.Abs(i - j);

            }
        }
    }
    return dmin;

答案 2 :(得分:0)

正如大家所说,你的错误在于声明你的函数返回一个int的数组(&gt; int []),在代码中,你返回一个int值(dmin,你的最小值 - 被排序的数组)。

您需要做的是:

1 /更改函数的声明,使其返回一个int,如Aimnox所述

2 /声明你调用函数的int:

int[] sortedArray = MinDistance(unsortedArray); // WRONG
int minValue = MinDistance(unsortedArray); // RIGHT

答案 3 :(得分:0)

你已经把自己与你的数组绑在一起

你正在输入一个数组,将其转换为整数值,然后尝试将其视为一个数组,所以首先你需要考虑你在做什么

所以你想要最小值还是所有最小值?

如果它的THE min那么

int min = MinDistance(array);
private static int MinDistance(int[] sortedArray)
{
    int dmin = int.MaxValue;

    int length = sortedArray.Length;
    for (int i = 0; i < length - 1; i++)
    {

        for (int j = 0; j < length - 1 - i; j++)
        {

            if (sortedArray[i] != sortedArray[j] && Math.Abs(i - j) < dmin) 
            {

                dmin = Math.Abs(i - j);

            }
        }
    }
    return dmin;
}

如果是ALL那么

int[] allMin = MinDistance(array);
private static int[] MinDistance(int[] sortedArray)
{
    List<int> dmin = new List<int>();

    int length = sortedArray.Length;
    for (int i = 0; i < length - 1; i++)
    {

        for (int j = 0; j < length - 1 - i; j++)
        {

            if (sortedArray[i] != sortedArray[j] && Math.Abs(i - j) < dmin) 
            {

                dmin.Add(Math.Abs(i - j));

            }
        }
    }
    return dmin.ToArray();
}

请注意,这只是纠正输入问题而不是逻辑