2017-01-22 90 views
1

我正在編寫一個應用程序來編輯.mp3文件的屬性。我不得不說我對編程和stackoverflow很新,所以我可能會做一些非常明顯的錯誤。請原諒我!這是我使用的代碼:CS0029 C#'不能隱式地將字符串[]轉換爲字符串'

private void btnApply_Click(object sender, EventArgs e) 
{ 
    var file = TagLib.File.Create(filepath); 
    if (!string.IsNullOrWhiteSpace(txtGenre.Text)) 
    { 
     file.Tag.Genres = new string[] {txtGenre.Text}; 
    } 
    if (!string.IsNullOrWhiteSpace(txtArtist.Text)) 
    { 
     file.Tag.Performers = new string[] {txtArtist.Text}; 
    } 
    if (!string.IsNullOrWhiteSpace(txtTitle.Text)) 
    { 
     file.Tag.Title = new string[] {txtTitle.Text}; 
    } 
    file.Tag.Performers = new string[] { txtArtist.Text }; 
    file.Tag.Title = txtTitle.Text; 
    file.Save(); 

    if (!ReadFile()) 
    { 
     Close(); 
    } 
} 

奇怪的事情對我來說,我只得到一個錯誤的這一部分:

if (!string.IsNullOrWhiteSpace(txtTitle.Text)) 
{ 
    file.Tag.Title = new string[] {txtTitle.Text}; 
} 

有了這個被紅色下劃線:

new string[] {txtTitle.Text} 

我在這裏錯過了什麼?我一直在尋找很長一段時間,但我似乎無法找到任何解決方案。先謝謝你!順便說一下,我也使用TagLib。

+0

你明白'string'和'字符串[]'之間的區別? –

+0

你正試圖把一個'string []'值放入一個'string'變量中。 'file.Tag.Title'是一個'字符串' –

+0

你可以試一下:'file.Tag.Title = txtTitle.Text;' – Hackerman

回答

3

更改此:

file.Tag.Title = new string[] {txtTitle.Text}; 

到:

file.Tag.Title = txtTitle.Text; 

Title類型string,而不是字符串數組(不string[]),但你嘗試分配陣列 - 因爲它,你得到錯誤。其他字段的類型爲string[](字符串數組),這就是爲什麼只有Title纔會出錯。

此外,您嘗試值賦給Title 2次:

if (!string.IsNullOrWhiteSpace(txtTitle.Text)) 
{ 
    file.Tag.Title = new string[] {txtTitle.Text}; // first time 
} 
file.Tag.Performers = new string[] { txtArtist.Text }; 
file.Tag.Title = txtTitle.Text;      //second time 

您需要分配一次。另外,當您第二次分配時,您可以正確分配,而不會出錯。

Performers相同的情況 - 您在if聲明中指定的第一次和在最後的if之後的第二次聲明。

+0

謝謝,這刪除了下劃線,但它不能按預期工作。這個想法是在文本框爲空時不編輯任何東西。這適用於txt.Genre,但不適用於標題或藝術家。我想,我必須自己弄清楚這一點。不過謝謝! – Luctia

+0

@Luctia,參見編輯答案。在'file.Save()'之前刪除兩行。這些行:'file.Tag.Performers =新的字符串[] {txtArtist.Text};''和'file.Tag.Title = txtTitle.Text;' –

+0

啊,是的,我試過並測試過。它現在有效。感謝您的幫助! – Luctia

1

更改這樣的代碼,並嘗試

file.Tag.Title = txtTitle.Text; 
相關問題