名称" ......."在当前上下文中不存在。错误

时间:2014-06-28 07:10:56

标签: c#

我正在使用一本书来学习C#,其中我被要求键入以下代码,但代码中使用的InFileOutFile代码为:

  

名称" InFile"在当前上下文中不存在。和名字   " OutFile将"在当前背景下不存在。

代码如下:

using System;
using System.IO;

class NumberIt
{
    public static void Main(string[] args)
    {
        if (args.Length <= 0)
        {
            Console.WriteLine("\nYou need to include a filename.");
        }
        else
        {
            StreamReader InFile = null;
            StreamWriter OutFile = null;
        }
        try
        {
            InFile = File.OpenText(args[0]);
            OutFile = File.CreateText("OutFile.txt");
            Console.Write("\nNumbering...");
            string line = InFile.ReadLine();
            int ctr = 1;

        while (line != null)
        {
            OutFile.WriteLine("{0}:{1}", ctr.ToString().PadLeft(3, '0'), line);
            Console.Write("..{0}..", ctr.ToString());
            ctr++;
            line = InFile.ReadLine();
        }
    }
    catch (System.IO.FileNotFoundException)
    {
        Console.WriteLine("Could not find the file {0}", args[0]);
    }
    catch (Exception e)
    {
        Console.WriteLine("Error: {0}", e.Message); 
    }
    finally
    {
        if (InFile != null)
        {
            InFile.Close();
            OutFile.Close();
            Console.WriteLine("...Done");
        }
    }
}
}

3 个答案:

答案 0 :(得分:1)

变量已声明,但在不同的范围内。 A&#39;范围&#39;通常说 - 花括号内的代码。

变量声明不是声明,因此您无法读取代码,如果参数正常,则声明两个变量&#39;。变量声明应该像&#39;这里有两个XY类型的容器,直到范围结束才会知道。&#39;。

所以你的代码应该与此类似。

public static void Main(string[] args)
{
    if (args.Length <= 0)
    {
        Console.WriteLine("\nYou need to include a filename.");
    }
    else
    {
       StreamReader InFile = null;
       StreamWriter OutFile = null;

       try
       {
           InFile = File.OpenText(args[0]);
           OutFile = File.CreateText("OutFile.txt");
           Console.Write("\nNumbering...");
       ...
       }
       catch ... 
       {
       }
    // InFile and OutFile still known here !
    }
 // InFile and OutFile are unknown here !

希望这能描述其他人已经提到的内容。

答案 1 :(得分:0)

您应该在Main方法的范围内或Main之外声明InFile和Outfile。

class NumberIt
{
    // declare them here
    public static void Main(string[] args)
    { 
       // or here
       ... 
    }
}

答案 2 :(得分:0)

变量InFile和OutFile超出了try / catch块的范围。

try/catch块移到其上方的else语句中,因此变量仍然可用。最简单的方法是将}移到try之上。