尝试编译此代码时出现错误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;
}
}
}
}
有人知道这里发生了什么吗?我无法弄清楚,也找不到答案。
答案 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();