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

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

我试图了解C#中的嵌套类。我知道嵌套类是在另一个类中定义的类,我没有得到的是为什么我需要这样做。



摇曳的蔷薇
浏览 792回答 4
4回答

BlueColor

嵌套类型,一般只针对父类的特殊功能实现,比如 C# 实现的迭代器模式,有了Enumerator 你的Foreach 循环才可以实现;public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable{...        [Serializable]        public struct Enumerator : IEnumerator<T>, IDisposable, IEnumerator        {                  }}

弑天下

我特别喜欢的模式是将嵌套类与工厂模式结合起来:public&nbsp;abstract&nbsp;class&nbsp;BankAccount{ &nbsp;&nbsp;private&nbsp;BankAccount()&nbsp;{}&nbsp;//&nbsp;prevent&nbsp;third-party&nbsp;subclassing. &nbsp;&nbsp;private&nbsp;sealed&nbsp;class&nbsp;SavingsAccount&nbsp;:&nbsp;BankAccount&nbsp;{&nbsp;...&nbsp;} &nbsp;&nbsp;private&nbsp;sealed&nbsp;class&nbsp;ChequingAccount&nbsp;:&nbsp;BankAccount&nbsp;{&nbsp;...&nbsp;} &nbsp;&nbsp;public&nbsp;static&nbsp;BankAccount&nbsp;MakeSavingAccount()&nbsp;{&nbsp;...&nbsp;} &nbsp;&nbsp;public&nbsp;static&nbsp;BankAccount&nbsp;MakeChequingAccount()&nbsp;{&nbsp;...&nbsp;}}通过嵌套这样的类,我让第三方无法创建自己的子类。我完全控制在任何bankaccount对象中运行的所有代码。我的所有子类都可以通过基类共享实现细节。

慕标琳琳

也许这是何时使用嵌套类的一个很好的例子?//&nbsp;ORIGINAL class&nbsp;ImageCacheSettings&nbsp;{&nbsp;}class&nbsp;ImageCacheEntry&nbsp;{&nbsp;}class&nbsp;ImageCache{ &nbsp;&nbsp;&nbsp;&nbsp;ImageCacheSettings&nbsp;mSettings; &nbsp;&nbsp;&nbsp;&nbsp;List<ImageCacheEntry>&nbsp;mEntries;}和://&nbsp;REFACTOREDclass&nbsp;ImageCache{ &nbsp;&nbsp;&nbsp;&nbsp;Settings&nbsp;mSettings; &nbsp;&nbsp;&nbsp;&nbsp;List<Entry>&nbsp;mEntries; &nbsp;&nbsp;&nbsp;&nbsp;class&nbsp;Settings&nbsp;{} &nbsp;&nbsp;&nbsp;&nbsp;class&nbsp;Entry&nbsp;{}}PS:我没有考虑应该应用哪些访问修饰符(私有,受保护,公共,内部)
打开App,查看更多内容
随时随地看视频慕课网APP