尝试创建“ API”,为什么不起作用?

时间:2020-01-04 11:44:02

标签: c#

在Unity的启发下,我试图创建一种可以简化新行为创建的API。 我是C#的新手,不了解为什么它不起作用。我编写的测试类应该无限地编写,直到程序结束时在ctor中指定的内容为止,但是它不会在控制台中编写任何内容。 这是我做的:

1-Program.cs

using System.IO;

namespace Program {

    public abstract class Script {
        public abstract void Start();
        public abstract void Update();
    }

    class Program {

        static bool IsKeyDown(ConsoleKey key) {
            if (Console.ReadKey(true).Key == key) return true;
            else return false;
        }

        public static void Main(string[] args) {
            Script[] scriptList = {
                new Write("Hello World"),
            };
            foreach (Script s in scriptList) {
                s.Start();
            }
            while (!IsKeyDown(ConsoleKey.Escape)) {
                foreach (Script s in scriptList) {
                    s.Update();
                }
            }
        }
    }
}

2-Write.cs

using System;

namespace Program {

    public class Write : Script {
        string str;
        public Write(string _str) {
            str = _str;
        }
        public override void Start(){}
        public override void Update(){
            Console.WriteLine(str);
        }
    }
}

对不起,我英语不好,我是法语:)

1 个答案:

答案 0 :(得分:5)

您在Console.ReadKey上的代码块。如果输入缓冲区中没有可用的键,则ReadKey停止并等待用户按下键。
您可以在他们说的文档中阅读此信息

ReadKey()方法最常见的用途之一是暂停程序 执行,直到用户按下一个键并且应用终止 或显示其他信息窗口。

您只需要添加

static bool IsKeyDown(ConsoleKey key)
{
    if (!Console.KeyAvailable) return false;
    if (Console.ReadKey(true).Key == key) return true;
    else return false;
}