【问题标题】:Turning user input into command line in c#在 C# 中将用户输入转换为命令行
【发布时间】:2020-04-05 17:08:36
【问题描述】:

我正在制作一个调试菜单,我想知道是否有办法在应用程序运行时获取用户输入并作为一行代码运行。

这里有一些代码可以帮助你理解我的意思:

using System;
using System.Threading;

namespace ExampleCode
{
    class Program
    {
        public static void debugMenu()
        {
            string codeToRun = Console.ReadLine();
            //execute codeToRun as a line of code
        }
    }
}

所以如果输入是“debugMenu();”然后它会重新运行该方法。

这对调试有很大帮助,因为我可以在应用程序仍在运行时访问和测试任何方法。

感谢您的回答!

【问题讨论】:

标签: c# debugging input console runtime


【解决方案1】:

首先,你这里有一些错误,任何程序的入口点都是我在这里看不到的主要方法。 现在回答您的问题,有一种方法,但不完全是您的想法。你应该有一个类似这样的 switch 语句

static void Main(string[] args)
{           
    string userInput = Console.ReadLine();
    switch(userInput)
    {
        case "debugMenu()":
            debugMenu();
        break;
        case "whatever":
            anotherFunction();
        break;
    }
}

public static void debugMenu()
{
    //whatever you want this function to do
}

public static void anotherFunction()
{
    //whatever you want this function to do
}

我个人不推荐这个,但它是字符串的功能齐全,函数本身并不重要。还有其他方法,但它涉及反思,由于您在基础知识方面苦苦挣扎,我不想让您进一步混淆

编辑: 此外,您的想法不是调试的好习惯,如果您需要测试函数的功能,我建议您搜索如何进行单元测试,它们也是可调试的

【讨论】:

  • 如果我没有找到其他解决方案,我会做同样的事情,但是对于我目前拥有的大约 20 种方法来说,这有点太多了,如果我做了其他方法,我必须为此添加另一个案例,这就是我放弃这个想法的原因。还是谢谢你!
【解决方案2】:

如果您只想在调试时调用方法,那么您可以使用Visual Studio's Immediate Window,它允许您在调试器中动态执行 C# 代码。这将允许您在调试时调用另一个方法,而无需更改代码。

另外请注意,Visual Studio 允许您在调试时拖动指令指针以更改程序流程。

编辑:听起来你需要熟悉unit testing

【讨论】:

  • 谢谢,但我需要测试一下,如果我一个接一个地运行特定的方法,它们是否会导致错误。我只能在应用程序未运行时使用它。
猜你喜欢
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多