【问题标题】:How to reliably move functions from the Main method to another class如何可靠地将函数从 Main 方法移动到另一个类
【发布时间】:2022-01-08 01:09:09
【问题描述】:

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

    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 语句来“跟踪”光标的位置。如何在新类中编写此代码?我不知道从哪里开始

【问题讨论】:

  • 目前还不清楚你想成为你班级的哪些部分。只是跟踪当前位置?地图大小?地图本身?一切?该类是否应该在其中包含 for 循环并从用户那里获取输入?...或者那会在循环之外,您只需告诉该类向上、向下、向左或向右移动?一些重大的设计决策需要在这里做出,我们无法为您做出这些决定......

标签: c# methods


【解决方案1】:

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

namespace NameYouGaveToProject
{
    class RandomNameClass
    {

    }

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

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

你有你的第一个自定义类!现在尝试在其中添加一些functions。如果您还没有了解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
        }
    }
}

然后你可以通过键入类的名称来调用它们,然后是一个点,然后是函数的名称,如果这个函数没有parameters,则输入“()”(我的示例)。

语法是:

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

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

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

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

【讨论】:

  • 谢谢!这有帮助
  • 很高兴读到!
猜你喜欢
  • 2011-11-17
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多