C# 对象组合

标签 c# oop object inner-classes object-composition

我有一个名为 LetterRect 的类,其中两个字段的类型为 LetterSquare。例如:

public class LetterRect : Microsoft.Xna.Framework.GameComponent
{
    private LetterSquare square1;                        
    private LetterSquare square2;
    private long indentificationNumber;
    ... other fields that are irrelevant to this question
}

我希望能够通过 square1 和 square2 获得对 LetterRect 对象的引用。我最初的解决方案是给 LetterRect 和相应的 square1 和 square2 一个长整数相同的 identificationNumber。但是,有没有办法在没有标识号的情况下访问 LetterRect?绝对不是继承关系,它是一种组合,或“has-a”关系。如果我没记错的话,在 Java 中有内部类的概念,内部类可以直接引用它所属的类的实例。那么,有没有更好的方法通过square1和square2获取LetterRect对象的引用呢?

感谢大家的帮助!

最佳答案

试试这个;

public class LetterRect : Microsoft.Xna.Framework.GameComponent
{
    private LetterSquare square1;
    private LetterSquare square2;
    public LetterRect()
    {
        square1 = new LetterSquare(this);
        square2 = new LetterSquare(this);
    }
}

public class LetterSquare 
{
    public LetterRect LetterRectProp { get; private set; }
    public LetterSquare (LetterRect letterRect )
    {
        this.LetterRectProp = letterRect;
    }
}

关于C# 对象组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10553368/

相关文章:

c# - 如何在高性能环境下生成网页图片?

c# - 转换所有参数、返回类型、类定义以使用接口(interface)

javascript - 如何在 Javascript 中检查每个对象字段的深度

c# - 如何从 ViewStart 中访问(自定义)Web 助手?

c# - System.Threading.Timer 的可扩展性如何?

c# - 如何使用带有 Prism 的 Unity 按约定注册类型?

java - 在java中的for循环中初始化对象?

java - 继承不允许我创建子类的对象?

ruby - Erlang actor 与 OOP 对象有何不同?

javascript - 将数据推送到数组然后迭代?