如何将指定控制台输出保存以更新C#程序中的dnaInput字符串?
解决方案
方案1:直接赋值(最简单,匹配需求)
如果目标输出内容是固定字符串,直接将内容赋值给dnaInput即可,无需绕文件操作:
public static void SecondCodon() { string targetContent = "save this to the string -> dnaInput"; Console.Write(targetContent); // 直接将目标内容赋值给全局变量 dnaInput = targetContent; }
执行选项2后回到主菜单,就能看到dnaInput已更新为目标文本。
方案2:捕获动态生成的控制台输出
如果目标内容是动态生成的(非固定字符串),可以用StringWriter临时重定向控制台输出,捕获指定内容后恢复原输出流:
public static void SecondCodon() { // 保存原始控制台输出流 var originalConsoleOut = Console.Out; using (var stringWriter = new StringWriter()) { // 临时将控制台输出重定向到StringWriter Console.SetOut(stringWriter); // 输出目标内容(此处可替换为动态生成的逻辑) Console.Write("save this to the string -> dnaInput"); // 从StringWriter提取输出内容,赋值给dnaInput dnaInput = stringWriter.ToString(); // 恢复原始控制台输出流 Console.SetOut(originalConsoleOut); } // 可选:将更新后的内容输出到控制台,让用户确认 Console.WriteLine($"\n已更新DNA链:{dnaInput}"); }
该方法仅捕获SecondCodon内的特定输出,不会影响主菜单的其他控制台内容。
原方法问题分析
你之前的StreamWriter代码将整个控制台的输出重定向到文件,导致主菜单等无关内容也被写入文件,不符合“仅捕获特定内容”的需求。如果只是要将内容存入变量,用StringWriter即可,完全不需要写入本地文件。
内容的提问来源于stack exchange,提问作者southstarangel
相关产品推荐
相关产品推荐

