簡體   English   中英

添加到數組並返回數組值-C#

[英]Add to array and return array values - C#

編碼的新手,這可能是相當基本的,但是可以得到幫助。

我相信我如何將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 還是還有其他問題? 任何幫助表示贊賞!

問題很可能不在此方法中,而是在調用方法中使用方法執行的結果。

我猜想,您稍后嘗試對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)); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM