C# 如何在不同的类之间共享对象?

C# 如何在不同的类之间共享对象?,c#,C#,所以基本上我有: namespace ciao { public class Game1 : Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics; SpriteBatch spriteBatch; public Item[] gameObjects = new Item[5]; } } where item是一个用来做一些事情的类(现在我只给它一个na

所以基本上我有:

namespace ciao
{
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        public Item[] gameObjects = new Item[5];
    }
}
where item是一个用来做一些事情的类(现在我只给它一个name属性) 现在,如果我想在我创建的任何新类中使用gameobjects,我应该怎么做


另一个附带问题是,这样做是一种不好的做法吗

据我所知,您希望将
gameObjects
数组作为参数传递到新类中

您只需创建一个类,其构造函数有一个参数来接受
数组,如下所示。请注意,这不是实现您要求的唯一方法

public class MyClass
{
    private Item[] gameObjects;

    public MyClass(Item[] gameObjects)
    {
        this.gameObjects = gameObjects
    }
}
现在,您可以在类的未来操作中引用
gameObjects
数组

从你的例子来看:

namespace ciao
{
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        public Item[] gameObjects = new Item[5];

        MyClass myClass = new MyClass(gameObjects);
    }
}

在Item类中创建属性并通过属性分配它们

至于附带的问题,我要看性能,它取决于你在做什么,所以你可以运行一些负载测试,看看它是否有效。

从一个角度来看,公开公共字段是一件坏事,因为任何外部代码都可以使
游戏对象
指向不同的数组实例。公开可变对象更糟糕,因为任何外部代码都可以修改数组的内容

这可能是移动信息最有效的方法,更有效的方法是只将其作为公共静态字段,这将使其成为比这更大的维护噩梦。所以,你不仅不应该考虑传递东西的性能成本,相反,你应该尽可能多地集中精力隐藏东西

您应该从定义需要从类中获取哪些信息开始,并通过接口编程。您是否需要
Game1
课程中的这些信息?该数据是否应封装到其他类中


你的
Game1
类真的需要实例化这些项目吗?或者它们应该在外部实例化,然后传递给
Game1
和其他类

是的,这会起作用,但这有效吗?我的意思是每次传递一个参数都是处理它的一种常用方法?在很多情况下,你不需要通过考试,只需要操作它们,这不是一个草率的技工吗?例如,假设我想全部绘制或删除它们,我不想将gameObjects传递给另一个类,我只想创建一个循环到gameObjects.Length的类,并设置一些参数或调用其他方法来绘制/操作它们中的每一个。我不太理解您的注释,但在上面的示例中,它只是传递一个数组指针。没有多少性能值得担心。如果您不想在类中存储对数组的引用,那么只需创建方法来对数组进行操作。这非常高效。您正在为现有数组分配引用。它的速度非常快,内存使用率也很低。对于你不需要游戏对象的类,那么你就不需要通过它们。请阅读你自己的帖子,并编辑它们。如果我们不理解您所写的内容,我们无法回答。如果“未来”类(
F
)需要引用类型为
a
的对象
a
,则为
F
创建一个构造函数,取
a
。如果F不需要它(即,它是可选的),则使用属性集方法执行。看一看工厂的模式,选择适合你需要的。好的,所有的答案我想我都知道了