【问题标题】:Creating a separate file for main, interface and class为 main、interface 和 class 创建一个单独的文件
【发布时间】:2018-12-15 12:06:39
【问题描述】:

我开始学习如何创建 C# 以及使用接口和类。 有人可以教我如何将我的类和我的界面分开,并且仍然保持它们之间的连接吗?

原因:如果我要更新我的代码,我会知道在哪里添加它们,并且我的屏幕上的代码会更少。

namespace Car
{
    class MainClass
    {

        //My Interface
        interface ICar
        {
            int gas { get; set; }

            //void refuel();

            int getGasLeft();
        }

        //My Class
        class Car : ICar
        {
            public int gas { get; set; }

            public Car(string _name)
            {
                name = _name;
                dist = 0;
                gas = 40;
            }


            public void refuel(int lit)
            {
                gas += lit;
            }


            public int getGasLeft()
            {
                return gas;
            }



        }

        //Main
        public static void Main(string[] args)
        {
            Car toyota = new Car();
            toyota.drive(100);
            toyota.refuel(5);
            Console.WriteLine("Name: " + toyota.name +
                              "\nGas Left: " + toyota.getGasLeft());

            Console.ReadLine();

        }
    }
}

【问题讨论】:

    标签: c# class interface


    【解决方案1】:

    在 C# 中,命名空间是连接来自不同位置的文件的方式。

    例如,您可以创建一个文件夹Interfaces 并将您的ICar 放在那里。我将向您展示我项目中的一个示例。

    我的文件夹结构如下:

    在我的ViewModel.cs 中,我使用了一个名为FakeData 的对象。如下所示,FakeData 类位于 TaskManager.Models 命名空间中。

    现在,我们将进入我们的项目,我们正在查看 Models 文件夹。

    在 C# 中,当您在其中创建文件夹和类时,您将根据您的文件夹名称获得 namespace。当然,你可以改变它。您可以根据需要编辑命名空间。

    在您的情况下,您可以简单地创建一个名为 Interfaces 的文件夹。右键单击,然后选择新建类,并为其命名,例如Icar.cs。将您的代码粘贴到那里。您的默认命名空间将是 ProjectName.Interfaces。制作你的界面public。然后,您可以通过在主类顶部添加using ProjectName.Interfaces 来调用您的接口。然后你可以在没有任何错误的情况下执行Main : ICar

    Car 类的想法相同。您可以创建一个名为Models 的文件夹和一个名为Cars.cs 的类。它将具有命名空间ProjectName.Models。如果要使用位于 Interfaces 文件夹中的接口,则需要将命名空间添加到 Car.cs 类。在您的情况下,它看起来像using ProjectName.Interfaces。然后,您可以在Car.cs 中调用该接口而不会出现任何错误。

    如有任何问题,请随时问我。我会尽力帮助你的。

    【讨论】:

    • 哇,这真的很详细@michasauces。你能批评我的班级并看到它的弱点吗?这个想法背后的原因是让我进一步了解 main 不应该知道后端的事情是如何完成的。
    • 我会在几个小时后看看它,因为我现在没有太多时间了。
    • 如果我的回答对你的问题没问题,你能通过markin来批准吗?
    • 您不需要我之前提到的文件夹,但这将有助于\导航,这是一种很好的做法。当您在项目目录中创建.cs 文件时(右键单击项目,然后只需添加新项目).cs 文件将具有相同的命名空间,例如ProjectName。所以你不需要在你的类中使用using namespace,因为文件在同一个命名空间中看到彼此。如果 Car 和 Main 将在同一个命名空间中,则不需要使用 using。只需从该类中调用对象,您就可以了
    • @Maku 如果您想要求代码审查,请转到codereview.stackexchange.com
    【解决方案2】:

    您需要了解公共、私有、受保护、命名空间等。

    根据您的情况,在同一文件夹中创建一个名为 ICar.cs 的新文件,并将其声明为同一命名空间中的公共接口。

    【讨论】:

    • 是的,这也是我正在测试的@DaeMoohn,我已经添加了两个文件,将 main、class 和 interface 分开。顺便说一句,你能批评一下我是如何使用保护级别的吗?是否有办法让主线永远不知道课堂上的一切是如何完成的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2012-12-10
    • 2017-12-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2013-12-06
    相关资源
    最近更新 更多