我正在制作一个应用程序来编辑 .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。
最佳答案
更改此:
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
之后进行第二次分配。
关于c# - CS0029 C# 'Cannot implicitly convert type string[] to string',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41793610/