【发布时间】:2020-04-08 16:59:48
【问题描述】:
关于 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 模块 (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(),试图为 Parser 模块保留 File.Open()。这是因为,如书中所述,在 Parser 的构造函数中,我必须实际打开文件流,也就是说,我不应该在 Program.cs 中打开它。但是每个打开文件的 C# 示例都需要一个字符串路径作为它的第一个参数,我已经在 Program.cs 中提供了它。所以我不确定如何在项目中实施这第一步。任何帮助表示赞赏。
谢谢
【问题讨论】:
标签: c# nand2tetris