如何在C#中调用方法?

时间:2010-10-26 03:16:28

标签: c#

我正在尝试学习C#中的方法如何工作(也使用XNA Framework)。

这是我制作的方法。

     public void Exit()
    {
        if (Keyboard.GetState().IsKeyDown(Keys.Escape))
        {
            this.Exit();
        }

我的印象是它的格式正确。但我不知道怎么称呼它。或许我做错了?

5 个答案:

答案 0 :(得分:7)

你必须从某个地方开始我猜...你似乎已经编写了一个递归的无限循环而不知道它!

public void Exit()
{
    if (Keyboard.GetState().IsKeyDown(Keys.Escape))
    {
        this.Exit(); // this is calling your own Exit() method we we are  in at the moment!
    }
}

我认为你想要的是:

public void Exit()
{
    if (Keyboard.GetState().IsKeyDown(Keys.Escape))
    {
        Environment.Exit();
    }
}

答案 1 :(得分:2)

方法是类(或结构)的成员,并通过类的实例调用。例如:

public class Foo {
    public void Bar() 
    {
        Console.WriteLine("Running the Bar method");
    }
}

然后你会在某处找到代码:

Foo fooVar = new Foo();
fooVar.Bar();    // call the Bar method

或者,您可以定义一个不需要该类实例的静态方法。例如:

public class Foo {
    public static void Bar() 
    {
        Console.WriteLine("Running the static Bar method");
    }
}

然后你可以在你的代码中调用它:

Foo.Bar();  // Foo is the name of class, not an object of type Foo

另请查看Charles Petzold's .Net Book Zero以获得对C#和.Net的精彩介绍。

答案 2 :(得分:1)

两件事突出:

  1. 你最后错过了}
  2. this.Exit()是递归电话。
  3. 方法总是在对象(如类)上声明,this引用当前对象,因此{k}继续调用自己,而 Esc 被按下。< / p>

    您尝试使用代码完成了什么?

答案 3 :(得分:0)

对于这种特殊方法,您只需将其称为:

Exit();

将其作为一行插入任何地方,它将起作用。在您执行此操作之前,请检查this.Exit();行,您不希望以递归方式自行调用....

但是看一下方法中的其他代码行我不确定你想要做什么 - 你是否想在与Esc键一起按下特定键时退出?< / p>

答案 4 :(得分:0)

我相信Microsoft.Xna.Framework.Game(你继承自(我认为))提供了一个你应该覆盖的“更新”方法。

Overriding基本上用你想要的任何东西替换基类的方法。在这种情况下,调用一个方法来检查键盘的状态,并在按下转义时退出。

每次游戏都应该更新,不出所料,更新自己(屏幕上的内容,玩家位置等)

protected override void Update(GameTime gameTime)
    {
       // ....

         ProcessKeyboard(); // Calls into ProcessKeyboard()

       //....
     }

private void ProcessKeyboard () // A new method
{
    if (Keyboard.GetState().IsKeyDown(Keys.Escape))
    {
         this.Exit(); // Provided from Microsoft.Xna.Framework.Game
    }

    // Handle other keys down here.
}