0

关于 Nand2Tetris 课程,我已经完成了书中的项目 7,作为一个巨大的 C# 菜鸟,我想我会尝试用这种语言来实现它作为练习。具体来说,我正在尝试遵循 Parser 模块的规范,但我已经在第一步中遇到了困难,这表明 Parser 的构造函数具有:

  • 参数:输入文件/流
  • 功能:打开输入文件/流并准备解析它

到目前为止,我的主程序(Program.cs)是:

namespace VM_1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Program Main");

            FileStream inFileStream = File.Create(@"c:\Users\<USERNAME>\Documents\Nand2Tetris\nand2tetris\projects\07\VM 1\in.vm");

            Parser parser = new Parser(inFileStream);
        }
    }
}

而解析器模块(Parser.cs)是:

namespace VM_1
{
    public class Parser
    {
        public Parser(FileStream inFileStream)
        {
            Console.WriteLine("Parser Constructor");
        }

        static void ParserMain()
        {
            Console.WriteLine("Parser Main");
        }
    }
}

我不知道这是否是构建 C# 程序的正确方法,但我的谷歌搜索已将我引向它,并且 Program.cs 和 Parser.cs 似乎可以毫无问题地集成。

问题是在 Parser 模块中,我试图将文件流作为参数,以便我可以在其构造函数中打开它。因此,我在 Program.cs 中使用File.Create(),尝试File.Open()为 Parser 模块保留。这是因为,正如书中所述,在 Parser 的构造函数中,我必须实际打开文件流,也就是说,我不应该在 Program.cs 中打开它。但是每个打开文件的 C# 示例都需要一个字符串路径作为它的第一个参数,我已经在 Program.cs 中提供了它。所以我不确定如何在项目中实施这第一步。任何帮助表示赞赏。

谢谢

4

1 回答 1

0

查看您已经可以读取/写入文件流的文档File.Create,因为. 如果需要打开一个已经创建的文件,只需使用File.Open并返回FileStream到您的Parser

于 2020-04-08T17:12:34.767 回答