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

时间:2018-08-15 02:22:19

标签: c# error-handling

尝试编译此代码时出现错误Error CS0029 Cannot implicitly convert type 'float' to 'float[]'

        float[] timeValues;

        float time;

        while (lineBeingRead != null)
        {
            valueSplit = lineBeingRead.Split(exerciseDivider);
            for (int i = 0; i < valueSplit.Length; i++)
            {
                if (valueSplit[i].Contains(textToFind))
                {
                    exerciseLine = valueSplit[i];

                    string[] timeValuesString = exerciseLine.Split(timeDivider);

                    for (int a = 0; a < timeValuesString.Length; i++)
                    {
                        time = float.Parse(timeValuesString[1]);
                        timeValues = time;
                    }
                }
            }
        }

有人知道这里发生了什么吗?我无法弄清楚,也找不到答案。

2 个答案:

答案 0 :(得分:1)

您需要先实例化数组,然后才能使用它,并且不能将单个float分配给整个数组。更改代码的以下部分

string[] timeValuesString = exerciseLine.Split(timeDivider);

timeValues = new float[timeValuesString.Length]; // CHANGE-1

for (int a = 0; a < timeValuesString.Length; i++)
{
    time = float.Parse(timeValuesString[1]);
    timeValues[a] = time; // CHANGE-2
}

答案 1 :(得分:0)

您正在尝试为数组分配浮点数(不将其添加为数组的元素)。因此,您必须首先使用预定义的大小timeValues = new float[neededLength]初始化数组。但是,如果您不知道所需的大小,则最好使用List<float>类型,如下所示:

//float[] timeValues;
List<float> timeValues = new List<float>();

float time;

while (lineBeingRead != null)
{
    valueSplit = lineBeingRead.Split(exerciseDivider);
    for (int i = 0; i < valueSplit.Length; i++)
    {
        if (valueSplit[i].Contains(textToFind))
        {
            exerciseLine = valueSplit[i];

            string[] timeValuesString = exerciseLine.Split(timeDivider);

            for (int a = 0; a < timeValuesString.Length; i++)
            {
                time = float.Parse(timeValuesString[1]);
                //timeValues = time;
                timeValues.add(time);
            }
        }
    }
}

此外,您可以在需要时通过调用其ToArray方法将列表转换为数组:

var timeArray = timeValues.ToArray();