【问题标题】:CS0029 C# 'Cannot implicitly convert type string[] to string'CS0029 C# '无法将类型字符串 [] 隐式转换为字符串'
【发布时间】:2017-01-22 16:54:15
【问题描述】:

我正在制作一个应用程序来编辑 .mp3 文件的属性。我不得不说我对编程和 stackoverflow 还很陌生,所以我可能会做一些非常明显错误的事情。请原谅我!这是我正在使用的代码:

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。

【问题讨论】:

  • 你了解stringstring[]的区别吗?
  • 您正试图将string[] 值放入string 变量中。 file.Tag.Titlestring
  • 你可以试试:file.Tag.Title = txtTitle.Text;
  • @Luctia 请不要用“SOLVED:”之类的状态信息破坏问题标题。接受答案就是为了这个目的。

标签: c# .net taglib


【解决方案1】:

改变这个:

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 之后分配。

【讨论】:

  • 谢谢,这删除了下划线,但它没有按预期工作。这个想法是当文本框为空时不编辑任何内容。这适用于 txt.Genre,但不适用于标题或艺术家。我想,我必须自己解决这个问题。不过还是谢谢!
  • @Luctia,请参阅编辑后的答案。删除file.Save() 之前的两行。这些行:file.Tag.Performers = new string[] { txtArtist.Text };file.Tag.Title = txtTitle.Text;
  • 啊,是的,我刚才试过了。现在可以了。感谢您的帮助!
【解决方案2】:

这样改代码试试

file.Tag.Title = txtTitle.Text;

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 2014-01-28
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多