private void button1_Click(object sender, EventArgs e)
        {            StreamReader sr1 = new StreamReader(textBox1.Text, Encoding.Default);
            StreamReader sr2 = new StreamReader(textBox2.Text, Encoding.Default);
            StreamWriter sw = new StreamWriter(@"c:\合并.txt", false, Encoding.Default);
            int i = 1;
            string vLine, Content, srtTime;
            Regex reg;
            Match m;
            while ((vLine = sr1.ReadLine()) != null)
            {
                if (vLine == i.ToString())
                {
                    reg = new Regex(@"\d{2}:\d{2}:\d{2},\d{3}.*\d{2}:\d{2}:\d{2},\d{3}");
                    vLine = sr1.ReadLine();
                    m = reg.Match(vLine);
                    if (m.Success)
                    {
                        srtTime = vLine;
                        sw.WriteLine(i);
                        sw.WriteLine(srtTime);                        while ((Content = sr1.ReadLine()) != "")
                        {
                            sw.WriteLine(Content);
                        }
                    }                    Console.WriteLine(srtTime);   <--- 这一行出错,提示没有srtTime这个局部变量
                }
            }
        }如果把出错的那一行,放在if (vLine == i.ToString())这个括号里面,就可以,大家说是不是活见鬼了,我的VS2005没有打SP1补丁

解决方案 »

  1.   

     private void button1_Click(object sender, EventArgs e) 
            {             StreamReader sr1 = new StreamReader(textBox1.Text, Encoding.Default); 
                StreamReader sr2 = new StreamReader(textBox2.Text, Encoding.Default); 
                StreamWriter sw = new StreamWriter(@"c:\合并.txt", false, Encoding.Default); 
                int i = 1; 
                string vLine, Content, srtTime; 
                Regex reg; 
                Match m; 
                while ((vLine = sr1.ReadLine()) != null) 
                { 
                    if (vLine == i.ToString()) 
                    { 
                        reg = new Regex(@"\d{2}:\d{2}:\d{2},\d{3}.*\d{2}:\d{2}:\d{2},\d{3}"); 
                        vLine = sr1.ReadLine(); 
                        m = reg.Match(vLine); 
                        if (m.Success) 
                        { 
                            srtTime = vLine; 
                            sw.WriteLine(i); 
                            sw.WriteLine(srtTime);                         while ((Content = sr1.ReadLine()) != "") 
                            { 
                                sw.WriteLine(Content); 
                            } 
                        } 

    //srtTime的作用域只能在 红色部分有用。因为它是局部变量
                        Console.WriteLine(srtTime);  <--- 这一行出错,提示没有srtTime这个局部变量 
                    } 
                } 
            } 
      

  2.   

    srtTime可能不经赋值即被使用...活见一个糊涂鬼...跟VS2005的Bug距离10万8千里...好好看书吧...整天只见些newbie在嚷系统的Bug...系统的Bug岂是那么容易被发现的?
      

  3.   

    局部变量也不应该只能在if{}这个域里面用吧?局部变量是一个function里面共用的呀?
    那我要整个function都能用上,应该怎样搞?
      

  4.   

    这是你程序的问题,设个条件断点,如果strTime == null就中断