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

为什么我需要使用C#嵌套类

为什么我需要使用C#嵌套类

C#
摇曳的蔷薇 2019-08-23 16:07:02
为什么我需要使用C#嵌套类我试图了解C#中的嵌套类。我知道嵌套类是在另一个类中定义的类,我没有得到的是为什么我需要这样做。
查看完整描述

4 回答

?
BlueColor

TA贡献1条经验 获得超1个赞

嵌套类型,一般只针对父类的特殊功能实现,比如 C# 实现的迭代器模式,有了Enumerator 你的Foreach 循环才可以实现;

public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable

{

...

        [Serializable]

        public struct Enumerator : IEnumerator<T>, IDisposable, IEnumerator

        {          

        }

}

查看完整回答
1 反对 回复 2020-01-02
?
弑天下

TA贡献1818条经验 获得超7个赞

我特别喜欢的模式是将嵌套类与工厂模式结合起来:

public abstract class BankAccount{
  private BankAccount() {} // prevent third-party subclassing.
  private sealed class SavingsAccount : BankAccount { ... }
  private sealed class ChequingAccount : BankAccount { ... }
  public static BankAccount MakeSavingAccount() { ... }
  public static BankAccount MakeChequingAccount() { ... }}

通过嵌套这样的类,我让第三方无法创建自己的子类。我完全控制在任何bankaccount对象中运行的所有代码。我的所有子类都可以通过基类共享实现细节。


查看完整回答
反对 回复 2019-08-23
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

也许这是何时使用嵌套类的一个很好的例子?

// ORIGINAL
class ImageCacheSettings { }class ImageCacheEntry { }class ImageCache{
    ImageCacheSettings mSettings;
    List<ImageCacheEntry> mEntries;}

和:

// REFACTOREDclass ImageCache{
    Settings mSettings;
    List<Entry> mEntries;

    class Settings {}
    class Entry {}}

PS:我没有考虑应该应用哪些访问修饰符(私有,受保护,公共,内部)


查看完整回答
反对 回复 2019-08-23
  • 4 回答
  • 0 关注
  • 793 浏览

添加回答

举报

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