C# 有没有更有效的编码方法?
我想不出更好的方法来写这篇文章了,这段代码还有7块。这个怎么样C# 有没有更有效的编码方法?,c#,taglib-sharp,C#,Taglib Sharp,我想不出更好的方法来写这篇文章了,这段代码还有7块。这个怎么样 Start: if(fileName.Contains("$track")) if(musicInfo.Tag.Track.ToString() != "") { fileName.Replace("$track", musicInfo.Tag.Track.ToString()); } else {
Start:
if(fileName.Contains("$track"))
if(musicInfo.Tag.Track.ToString() != "") {
fileName.Replace("$track", musicInfo.Tag.Track.ToString());
}
else {
switch(System.Windows.Forms.MessageBox.Show("Error: Track # missing from tag info", "Error", System.Windows.Forms.MessageBoxButtons.AbortRetryIgnore, System.Windows.Forms.MessageBoxIcon.Error)) {
case System.Windows.Forms.DialogResult.Abort:
fileName = "ABORTED";
return fileName;
case System.Windows.Forms.DialogResult.Retry:
goto Start;
case System.Windows.Forms.DialogResult.Ignore:
fileName.Replace("$track", "");
}
}
我不确定是否更高效,但是对于很多人来说,
goto
是一段令人讨厌的代码。。这也会让你的用户陷入一个循环,如果文件名包含track,而标记track是空的,单击“重试”会将他们带到下一个消息框,以重试repeatedlyDino传入。。。我应该把它换成一个循环吗?我觉得这只会添加更多的代码,我知道这会将他们带到另一个框中,这样他们就可以向标记中添加任何缺少的详细信息,然后单击“重试”。他们没有机会添加更多详细信息,如果他们单击“重试”,则使他们进入该消息框的条件没有机会更改,因此,只要他们单击“重试”,他们就会被困在同一个位置可以在windows Explorer中添加详细信息Recursion在这里看起来不合适,您是对的,将其提取到其他方法应该会更好。我还有7个以上的代码块,下面是一个链接:
public string GetFileName(string fileName)
{
if(fileName.Contains("$track") &&
!String.IsNullOrEmpty(musicInfo.Tag.Track.ToString())
{
return fileName.Replace("$track", musicInfo.Tag.Track.ToString());
}
var userOption = System.Windows.Forms.MessageBox.Show(
"Error: Track # missing from tag info", "Error",
System.Windows.Forms.MessageBoxButtons.AbortRetryIgnore,
System.Windows.Forms.MessageBoxIcon.Error)
switch(userOption)
{
case System.Windows.Forms.DialogResult.Abort:
return "ABORTED";
case System.Windows.Forms.DialogResult.Retry:
return GetFileName(fileName);
case System.Windows.Forms.DialogResult.Ignore:
return fileName.Replace("$track", "");
}
}