如何可靠地将函数从 Main 方法移动到另一个 class

How to reliably move functions from the Main method to another class

我是 C# 初学者,所以现在我的大部分代码都在 Main() 方法中。我想让我的程序更加面向对象,所以我想将代码从 Main 方法可靠地移动到另一个 class(这样我也可以用其他程序来做)。

    static void Main()
{
        int xLentgh = 20;
        int yLength = 20;
        
        Map.MapBuilder(xLentgh,yLength);
        int oldPositionX = 0;
        int oldPositionY = 0;
        int newPositionX = 0;
        int newPositionY = 0;
        if (oldPositionX == 0)
        {
            Map.WriteAt(".",newPositionX, newPositionY);
        }
        
        for (int i = 0; i < 100; i++)
        {
            ConsoleKeyInfo KeyStroke;
            KeyStroke = Console.ReadKey();
            
            switch (KeyStroke.Key)
            {
                case ConsoleKey.RightArrow:
                {
                    if (newPositionX < xLentgh-1)
                    {
                        oldPositionX = newPositionX;
                        oldPositionY = newPositionY;
                        newPositionX++;
                    }
                    break;
                }
                case ConsoleKey.LeftArrow:
                {
                    if (newPositionX > 0)
                    {
                        oldPositionX = newPositionX;
                        oldPositionY = newPositionY;
                        newPositionX--;
                    }
                    break;
                }
                case ConsoleKey.UpArrow:
                {
                    if (newPositionY > 0)
                    {
                        oldPositionX = newPositionX;
                        oldPositionY = newPositionY;
                        newPositionY--;
                    }
                    break;
                }
                case ConsoleKey.DownArrow:
                {
                    if (newPositionY < yLength-1)
                    {
                        oldPositionX = newPositionX;
                        oldPositionY = newPositionY;
                        newPositionY++;
                    }
                    break;
                }
                default: break;
                
        }            
        
        Map.WriteAt(".",newPositionX, newPositionY);
        Map.WriteAt(" ",oldPositionX, oldPositionY);
}
}

在这段代码中,我创建了一个“地图”,并在 for 循环中使用 switch 语句来“跟踪”光标的位置。如何在新的 class 中编写此代码?我不知道从哪里开始

您可以尝试通过在 bloc class Program {} 之外声明它来创建一个您想要命名的 class(我们称它为 RandomNameClass)。 你应该有这样的东西:

namespace NameYouGaveToProject
{
    class RandomNameClass
    {

    }

    class Program
    {
        static void Main(string[] args)
        {
            // Your actual code here
        }
    }
}

上方或下方都可以,但如果您将所有代码都写在一个文件中,则更喜欢底部有 class Program

这是您的第一个自定义 class!现在尝试添加一些 functions in it. If you haven't learn about instantiating a class,只是不要忘记在函数的返回类型之前添加 public static

您可能拥有的示例:

namespace NameYouGaveToProject
{
    class RandomNameClass
    {
        // Function that doesn't return anything, returns "void"
        public static void SayHi()
        {
            Console.WriteLine("Hi!");
        }

        // Function that returns a string
        public static string ReturnHi()
        {
            return "Hi!";
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Your actual code here
        }
    }
}

然后您可以通过输入 class 的名称来调用它们,然后是一个点,然后是函数的名称和“()”(如果没有 parameters)函数(在我的示例中没有)。

语法为:

// Call the void function
RandomNameClass.SayHi();

// Call the function returning a string
string testVariable = RandomNameClass.ReturnHi();

请注意,您可以根据需要随时调用每个函数

瞧!您了解创建 class 并从此 class 调用函数的基础知识!接下来你应该学习的是如何正确地创建函数,然后实例化一个 class 并管理它的内容