首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在哪里以及如何使用嵌套类?

在哪里以及如何使用嵌套类?
EN

Stack Overflow用户
提问于 2010-06-30 02:33:34
回答 4查看 632关注 0票数 10

我在想,如果一个类只在另一个类中被实例化,那么将它嵌套在那个类中是正确的。我认为这会帮助我们很好地使用design.When。我看了我的项目,如果我尝试嵌套类,我几乎从未见过这样的嵌套structure.But,所以这次在我的mind.For示例中出现了另一个问题

我有棋盘类,移动类,如ShortCastle,LongCastle,EnPassant,Promote和棋子,如兵,皇后,车,骑士等,所以很明显板类将实例化棋类,棋类将实例化移动类。对于一个好的设计,提升移动类应该是嵌套的兵,因为只有兵可以促进itself.short和长城堡应该嵌套的国王,因为只有国王可以有这种类型的移动。

试图把所有的块类放到Board类中看起来不是很好的设计,因为8-9类将在Board类中,这真的很烦人,因为一个Board类文件太大了,很难读。我更喜欢把每个块类放在另一个文件中。很好,我们可以创建部分Board类,但8-9个部分Board类文件将包含每个块类,这不是很烦人吗?不让它们嵌套是不是更好?同样的,为另一个移动类型的类创建另一个部分块文件?如果嵌套的类只占用很小的空间,那么不会有任何问题,但是如果它需要很多方法呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-30 02:43:00

我觉得你对嵌套类太慷慨了。看看嵌套类型的this设计指南。

如果满足以下条件,请不要使用嵌套类型:

  • 该类型必须由客户端代码实例化。如果类型具有公共构造函数,则可能不应嵌套该类型。这条准则背后的基本原理是,如果嵌套类型可以实例化,则表明该类型在库中有自己的位置。您可以在不使用外部类型的情况下创建、使用和销毁它。因此,它不应该嵌套。如果没有与外部类型的关系,则不应在外部类型之外广泛重用内部类型。

这些棋子可能属于一块棋盘(棋子集合作为成员?)但可以在没有它的情况下共存。你可以用f.e。我想重用没有块的棋盘(主题等),也想重用没有棋盘的棋子(位置等)。

票数 11
EN

Stack Overflow用户

发布于 2010-06-30 02:47:05

父类中的私有成员可由下一类方法访问。

Nexted类允许在不扩大范围的情况下降低复杂性。

票数 2
EN

Stack Overflow用户

发布于 2010-06-30 02:54:15

如果您确实认为嵌套类对您的设计有意义(请参阅Tim Schmelter的警告),但觉得文件太大,那么使用分部类可以将嵌套类定义拆分到各自的文件中。或者,如果嵌套类本身足够小,但您有大量嵌套类,则将所有嵌套类放入一个部分文件中。

Parent.cs:

代码语言:javascript
运行
复制
public partial class Parent
{
    void SomeMethod()
    {
        Nested1 n1 = new Nested1();
        Nested2 n2 = new Nested2();
    }
}

Nested.cs:

代码语言:javascript
运行
复制
public partial class Parent
{
    private class Nested1
    {

    }
    private class Nested2
    {

    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3143670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档