编码新手,这可能是相当基础的,但我们将不胜感激。
我认为我将note2
添加到majorScale[]
的方式存在问题。块完成后,它返回System.String[]
而不是我期望的实际数组。
public static string[] majorScaleOfNote (string tonic)
{
string[] intervals = { "M2", "M3", "P4", "P5", "M6", "M7" };
string[] majorScale = new string[7];
majorScale [0] = tonic;
foreach (string interval in intervals) {
string note2 = intervalUpToNote (tonic, interval);
majorScale[Array.IndexOf (intervals, interval) + 1] = note2;
}
return majorScale;
}
我已将问题缩小到string[] majorScale
中的某些内容。当我运行没有它的东西时,它会产生正确的结果。像这样:
Console.WriteLine (tonic);
string[] intervals = { "M2", "M3", "P4", "P5", "M6", "M7" };
foreach (string interval in intervals) {
string note2 = intervalUpToNote (tonic, interval);
Console.WriteLine (note2);
}
我将note2
添加到majorScale
的方式是否有问题?或者还有其他问题吗?任何帮助表示赞赏!
答案 0 :(得分:0)
问题很可能不在于此方法,而是在调用方法中使用方法执行的结果。
我想,您稍后会尝试Console.WriteLine
其数组的内容,如下所示:
string[] result = majorScaleOfNote("M1");
Console.WriteLine(result);
您无法以这种方式输出数组
C#将.ToString()
应用于所有对象以获取其字符串表示形式。数组没有自己的ToString()
方法,这会导致调用大多数基类Object
' .ToString()
。它只是执行以下操作:
public virtual String ToString()
{
return GetType().ToString();
}
这就是为什么,它输出的结果为System.String[]
。
如果要输出数组的所有元素,可以尝试自己迭代并逐个输出字符串:
string[] result = majorScaleOfNote("M1");
foreach (var note in result)
Console.WriteLine(result);
或者您可以使用String.Join
方法,该方法使用提供的分隔符连接字符串:
string[] result = majorScaleOfNote("M1");
Console.WriteLine(string.Join(", ", result));