在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);
}
}
}
对不起,我英语不好,我是法语:)
答案 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;
}