如何在C#中使用方法(如果可能)实例化类?

发布于 2025-01-17 09:20:43 字数 392 浏览 0 评论 0原文

假设您有某种控制台应用程序游戏,并且在游戏中您创建了一个具有自己的类的对象。当游戏仍在运行时,您如何使用方法或函数之类的东西创建该类的实例。

我查遍了互联网,几周后还没有找到任何东西。通常,我只会为该类创建一个数组,并向其中添加新实例,如下所示。

class MyClass 
{
   //fields and methods
}

class Program 
{
   static void Main(string[] args) 
   {
      MyClass[] myClasses = new MyClass[16];
      myClasses.SetValue(new MyClass(), 0);
   }
}

但这感觉笨拙且低效。我希望我能尽快弄清楚这一点。

Say you had some sort of console-application game, and inside the game you create an object which would have it's own class. How would you make an instance of that class with something like a method or function while the game might still be running.

I've looked all over the internet and haven't found anything after weeks. Normally, I would just create an array for the class and add new instances to it like so.

class MyClass 
{
   //fields and methods
}

class Program 
{
   static void Main(string[] args) 
   {
      MyClass[] myClasses = new MyClass[16];
      myClasses.SetValue(new MyClass(), 0);
   }
}

But this feels clunky and inefficient. I hope I figure this out soon.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

演多会厌 2025-01-24 09:20:43

有很多方法可以做到这一点。最常见和接受的方式可能是FactoryPattern

创建您的工厂:

public static class MyClassFactory
{

    public static MyClass CreateNew() {
        return new MyClass();
    }
    
    public static MyClass[] CreateRange(int amount) {
        
        var myArr = new MyClass[amount];
        
        for (int i = 0; i < amount; i++)
        {
            myArr[i] = new MyClass();
        }
        
        return myArr;
    }
}

然后只需在代码中调用它:

class Program 
{
   static void Main(string[] args) 
   {
      MyClass[] myClasses = MyClassFactory.CreateRange(16);
   }
}

There are many ways to do this. The most common and accepted way may be the FactoryPattern.

Create your factory:

public static class MyClassFactory
{

    public static MyClass CreateNew() {
        return new MyClass();
    }
    
    public static MyClass[] CreateRange(int amount) {
        
        var myArr = new MyClass[amount];
        
        for (int i = 0; i < amount; i++)
        {
            myArr[i] = new MyClass();
        }
        
        return myArr;
    }
}

Then simply call it in your code:

class Program 
{
   static void Main(string[] args) 
   {
      MyClass[] myClasses = MyClassFactory.CreateRange(16);
   }
}
灯角 2025-01-24 09:20:43

你是否正在尝试这样做:

  var myClasses = new MyClass[16];
  myClasses[0] = new MyClass();

Are you trying to do this:

  var myClasses = new MyClass[16];
  myClasses[0] = new MyClass();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文