1

我正在使用 cosmos 制作一个简单的操作系统。我是 C# 的初学者。cosmos 的默认代码循环中的 Run() 方法,直到我退出 VMware。但是,一旦我稍微修复一下,我的程序就会自动退出。我不明白为什么。我试图让它循环。我修复之前 Cosmo 的默认代码:

 public class Kernel : Sys.Kernel
{
    protected override void BeforeRun()
    {
        Console.WriteLine("Cosmos booted successfully. Type a line of text to get it echoed back.");
    }

    protected override void Run()
    {
         Console.Write("Input: ");
         var input = Console.ReadLine();
         Console.Write("Text typed: ");
         Console.WriteLine(input);
    }
}

下面是我的新 Run() 方法。其他一切都保持不变。

protected override void Run() {
    Console.WriteLine("Input:");
    String input = Console.ReadLine();
    if (input.StartsWith("echo"))
    {
        var index = input.IndexOf("echo");
        var initial = input.Substring(0, index);
        var final = input.Substring(index + "echo".Length);
        var echoInput = initial + final;
            Console.WriteLine(echoInput);
        }
}
4

1 回答 1

1

我的程序自动退出......

这是因为您在运行时的新run方法中有一个未经检查的异常,并且应用程序正在静默崩溃......

这里的逻辑必须调试和纠正......

var index = input.IndexOf("echo");
var initial = input.Substring(0, index);
var final = input.Substring(index + "echo".Length);
var echoInput = initial + final;
Console.WriteLine(echoInput);

看一下这个:

输入

《回声世界》

然后:

变量索引=0

var initial="" // 空字符串

var final = "echo"// 如果你只给出 echo 作为输入,这里会出现索引越界异常

变回声输入=“”+“回声”

于 2016-10-26T01:00:49.013 回答