为了账号安全,请及时绑定邮箱和手机立即绑定

为什么/何时应在.net中使用嵌套类?难道不是吗?

/ 猿问

为什么/何时应在.net中使用嵌套类?难道不是吗?

慕仙森 2019-09-21 15:53:21

在Kathleen Dollard的2008年博客文章中,她提出了在.net中使用嵌套类的有趣原因。但是,她还提到FxCop不喜欢嵌套类。我假设编写FxCop规则的人并不愚蠢,因此在该职位后面必须有推理,但我找不到它。


查看完整描述

3 回答

?
凤凰求蛊

当您要嵌套的类仅对封闭类有用时,请使用嵌套类。例如,嵌套类允许您编写类似(简化)的内容:


public class SortedMap {

    private class TreeNode {

        TreeNode left;

        TreeNode right;

    }

}

您可以在一个地方对类进行完整定义,而不必跳过任何PIMPL箍来定义类的工作方式,并且外界也无需查看任何实现。


如果TreeNode类是外部类,则必须创建所有字段public或使用一堆get/set方法来使用它。外部世界将有另一类污染他们的智力。


查看完整回答
反对 回复 2019-09-21
?
慕仰0522570

从Sun的Java教程中:


为什么要使用嵌套类?使用嵌套类有许多令人信服的原因,其中包括:


这是一种对仅在一个地方使用的类进行逻辑分组的方法。

它增加了封装。

嵌套类可以导致更具可读性和可维护性的代码。

类的逻辑分组-如果一个类仅对其他一个类有用,则将其嵌入该类并将两者保持在一起是合乎逻辑的。嵌套此类“帮助程序类”可使它们的程序包更加简化。


增加的封装-考虑两个顶级类A和B,其中B需要访问A的成员,否则将其声明为私有。通过将类B隐藏在类A中,可以将A的成员声明为私有,而B可以访问它们。另外,B本身可以对外界隐藏。<-这不适用于C#的嵌套类的实现,仅适用于Java。


更具可读性和可维护性的代码-将顶级类嵌套在小类中可以使代码更靠近使用位置。


查看完整回答
反对 回复 2019-09-21
?
绝地无双

完全惰性和线程安全的单例模式


public sealed class Singleton

{

    Singleton()

    {

    }


    public static Singleton Instance

    {

        get

        {

            return Nested.instance;

        }

    }


    class Nested

    {

        // Explicit static constructor to tell C# compiler

        // not to mark type as beforefieldinit

        static Nested()

        {

        }


        internal static readonly Singleton instance = new Singleton();

    }

}

来源:http://www.yoda.arachsys.com/csharp/singleton.html


查看完整回答
反对 回复 2019-09-21

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信