Что касается курса по 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#, но мое приближение к Google привело меня к нему и к Program.cs и Parser. Кажется, что cs интегрируется без проблем.
Проблема заключается в том, что в модуле Parser я пытаюсь принять файловый поток в качестве аргумента, чтобы я мог открыть его в конструкторе. Поэтому в Program.cs я использую File.Create()
, пытаясь зарезервировать File.Open()
для модуля Parser. Это связано с тем, что, как указано в книге, в конструкторе Parser мне фактически нужно было открыть файловый поток, то есть я не должен открывать его в Program.cs. Но каждый C# пример открытия файла требует в качестве первого аргумента путь к строке, и я уже указал его в Program.cs. Поэтому я не уверен, как реализовать этот первый шаг в проекте. Любая помощь приветствуется.
Спасибо