【问题标题】:Writing a modular program [closed]编写模块化程序[关闭]
【发布时间】:2016-05-03 16:33:18
【问题描述】:

我想让我的程序“模块化”,我想知道我是否采取了正确的方法。

我的意思是我希望在它自己的 c# 文件中包含一些可重用的“处理”内容。通过这种方式,我可以简单地在项目之间复制文件,以便能够重用我的代码。由于这可能没有意义,让我用一个例子来解释。

Program.cs

static class Program
{
    static void Main()
    {
        int[] x = {0, 0, 0, 0, 0};
        BClass b = new BClass(x);
        Console.Write("[ ");
        foreach (int i in x)
        {
            Console.Write(i + " ");
        }
        Console.Write("]\n");
        Console.Read();
    }
}

BClass.cs

class BClass
{
    int[] x;
    public BClass(int[] x)
    {
        for (int i = 1; i < 5; i++)
        {
            x[i] = i;
        }
    }
}

现在,这工作正常,我得到了我期望的输出,但感觉错误,我猜?除了我的直觉之外,我还收到了警告(正如我所料),因为 BClass 对象未使用。最后,我的问题是使程序模块化的最佳方法是什么?使用类感觉不对,因为我最终引用了一个永远不会使用的对象。也许我用错了类?

【问题讨论】:

  • 1-像这样的主观问题肯定会在 S.O. 2-创建一个类是个好主意,但不是在构造函数中做事,然后只是创建静态函数并使用它们,你根本不需要 BClass 实例。 3-如果您真的想重用代码,请将这些类放在类库中,比在项目之间复制文件更好。
  • 如果您不了解类以及它们如何工作以及事件驱动程序,如何在不发布与 C# 无关的所有 python 代码的情况下解释您要完成的工作关于 C#,也许你应该做更多的阅读,以了解在 .net 与 python 中的工作方式之间的差异。..模块化与否..
  • @Gusman 我不认为这是非常主观的,我已经编辑了标题以澄清。在我的程序中,处理是在静态方法而不是构造函数中完成的,这是一个简单的例子,但是我确实需要传入值,因此我使用了构造函数。
  • 这是主观的,因为有很多方法可以做到这一点,每个程序员都会更喜欢其中一种,但所有这些方法都是正确的。而且您不需要构造函数将参数传递给函数,例如,您可以在示例中声明public static void ProcessArray(int[] x),然后调用它BClass.ProcessArray(x);
  • 如果你不知道你可以将参数传递给一个函数......最好找一本书来学习C#和OOP,不要试图冒犯,但你缺乏使用对象编程的基本知识。

标签: c# oop modular-design


【解决方案1】:

看起来您希望有一些可以从应用程序中的任何位置运行的逻辑。为此,您将使用静态方法。

静态方法不需要运行实例。

由于所有BClass 都包含一个静态方法,您不妨也将BClass 设为静态。静态类是不能实例化的类。它只存在于包含静态方法。

public static class BClass
{
    public static void DoStuff(int[] x)
    {
        for (int i = 1; i < 5; i++)
        {
            x[i] = i;
        }
    }
}

当你想使用这个逻辑时,你只需这样做

BClass.DoStuff(myArray);

【讨论】:

  • 如 cmets 中所述,这正是我所寻找的;感谢您提供结构合理的答案和解释
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 2016-07-07
  • 1970-01-01
相关资源
最近更新 更多