变量从我在 C# 中的方法中泄漏

Variables are leaking from my methods in C#

我目前有一个代码块,除了少数变量外,它在整个程序中都在 Button Clicks 中重复出现。问题是,当我从单击一个按钮转到另一个按钮时,plHTML 开始从前一个按钮泄漏文本。在我尝试制作该方法之前,这并没有发生。

如何防止变量相互泄漏?

这是我尝试过的方法

    String cleanCombo1;
    String cleanCombo2;
    String cleanCombo3;
    String cleanCombo4;
    String cleanCombo;
    public string GetTextBetween(string firstPart, string secondPart, string lastPart)
    {
        String St1 = plHTMLP1.Text;
        int pFrom1 = St1.IndexOf(firstPart) + firstPart.Length;
        int pTo1 = St1.IndexOf(lastPart, pFrom1);
        if (St1.Substring(pFrom1, pTo1 - pFrom1).Contains(secondPart))
        {
            cleanCombo1 = St1.Substring(pFrom1, pTo1 - pFrom1);
        }
        String St2 = plHTMLP2.Text;
        int pFrom2 = St2.IndexOf(firstPart) + firstPart.Length;
        int pTo2 = St2.IndexOf(lastPart, pFrom2);
        if (St2.Substring(pFrom2, pTo2 - pFrom2).Contains(secondPart))
        {
            cleanCombo2 = St2.Substring(pFrom2, pTo2 - pFrom2);
        }
        String St3 = plHTMLP3.Text;
        int pFrom3 = St3.IndexOf(firstPart) + firstPart.Length;
        int pTo3 = St3.IndexOf(lastPart, pFrom3);
        if (St3.Substring(pFrom3, pTo3 - pFrom3).Contains(secondPart))
        {
            cleanCombo3 = St3.Substring(pFrom3, pTo3 - pFrom3);
        }
        String St4 = plHTMLP4.Text;
        int pFrom4 = St4.IndexOf(firstPart) + firstPart.Length;
        int pTo4 = St4.IndexOf(lastPart, pFrom4);
        if (St4.Substring(pFrom4, pTo4 - pFrom4).Contains(secondPart))
        {
            cleanCombo4 = St4.Substring(pFrom4, pTo4 - pFrom4);
        }
        cleanCombo = cleanCombo1 + cleanCombo2 + cleanCombo3 + cleanCombo4;
        return cleanCombo;
    }

我有三个按钮(目前)使用此方法。

这是其中一个按钮包含的代码示例

private void mButton_Click(object sender, EventArgs e)
{
            String firstPart = "<strong>http://m2.";
            String secondPart = "m.com</strong>";
            String lastPart = "</p>";
            GetTextBetween(firstPart, secondPart, lastPart);
            plHTML.Text = FilterHTML(cleanCombo, "m.com");
}

不确定我制作的其他方法是否会影响代码,但这里是

    public string FilterHTML(string cleanCombo, string EndOfString)
    {
        cleanCombo = cleanCombo.Replace("<strong>", "");
        cleanCombo = cleanCombo.Replace("<br />", "");
        cleanCombo = cleanCombo.Replace("</strong>", "");
        cleanCombo = cleanCombo.Replace(EndOfString, "");
        return cleanCombo;
    }

我认为变量 cleanCombo1cleanCombo2cleanCombo3cleanCombo4 的范围有问题。这些应该在方法 GetTextBetween 的范围内声明。您的新方法也使用这些变量,如果 GetTextBetween 没有进入任何 if 块,它将在 cleanComboX 变量中重用垃圾值。