小编Bru*_*lip的帖子

按下键时C#退出

我有以下代码的问题:

using System;
class Yellow
{
    static void Main()
    {
        Console.WriteLine("Check_1");
        Console.ReadKey();
        Console.WriteLine("Check_2");
        char beep = '\a';
        int i = 3;
        while (!Console.KeyAvailable)
        {
            Console.WriteLine(beep);
            System.Threading.Thread.Sleep(200);
            Console.WriteLine("Check_" + i);
            i++;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在等待输入字符开始之后,该程序Check_<i>在每个循环之间输出一个蜂鸣声和一个等待200毫秒的消息.如果在该循环期间按下某个键,程序将终止.

但是,当我等待循环运行多次(大约36次)时,当我按下一个键时循环不会中断.当我尝试使用X按钮手动关闭控制台时,程序没有响应.

如果循环运行了几十次,为什么会这么重要?

c# console

5
推荐指数
0
解决办法
253
查看次数

这种bool方法是一种不好的做法吗?

有时我发现自己写的bool方法看起来像这样:

public bool isRunning()
    {
        if (!(move == Moving.None) && staminaRegan == true)
        {
            if (keyState.IsKeyDown(Keys.Space))
            {
                EntityAnimation.interval = 10;
                return true;
            }
            else
            {
                EntityAnimation.interval = 65;
                return false;
            }
        }
        else 
        {
            EntityAnimation.interval = 65;
            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

(顺便说一下,这是XNA)正如你所看到的,我有一个bool isRunning,其中我做了一个if语句,我在这里检查是否(玩家正在移动)&&(恢复耐力,一旦耐力达到小于某个值,则设置为假6.0f)然后我只是检查Space是否被按下,如果是,则我的动画更快(间隔越小,spritesheet更改越快),然后它发送true值,这意味着Player正在运行,否则我不是原因没有按空格.

然后我必须在第一个if语句之外重复这个'else'代码,这样如果Player没有移动或者他的耐力Regan是假的,它会发送Player没有运行;

所以我只是想知道这种bool方法被认为是一种不好的做法(你在嵌套if中重新获得true和false值,然后在嵌套if之后返回false并重复相同的代码)?

c# performance xna

2
推荐指数
1
解决办法
138
查看次数

是否可以在C#中使用全局方法

所以我有一个静态类让我们说它叫做Worker,并且让我说它里面有一个名为Wait(float f)的方法,所有公共所以我可以在任何地方访问它,如下所示:

Worker.Wait(1000);
Run Code Online (Sandbox Code Playgroud)

现在我想知道有什么方法可以定义某种独特的特殊方法,所以我可以像这样做:

Wait(1000);
Run Code Online (Sandbox Code Playgroud)

(没有在课堂上我会使用它)?

c# static-methods static-libraries

1
推荐指数
1
解决办法
119
查看次数