C# 有没有更有效的编码方法?

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 {

我想不出更好的方法来写这篇文章了,这段代码还有7块。

这个怎么样

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", "");
     }
}