添加到数组并返回数组值 - C#

时间:2016-11-23 03:32:15

标签: c# arrays return

编码新手,这可能是相当基础的,但我们将不胜感激。

我认为我将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的方式是否有问题?或者还有其他问题吗?任何帮助表示赞赏!

1 个答案:

答案 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));