Kathleen Dollard's 2008 blog post篇文章中,她提出了一个有趣的理由,在中使用嵌套类.网然而,她也提到FxCop不喜欢嵌套类.我假设写FxCop规则的人并不愚蠢,所以这个立场背后一定有道理,但我一直没能找到它.

推荐答案

当您正在嵌套的类仅对包含的类有用时,请使用嵌套类.例如,嵌套类允许您编写类似(简化)的代码:

public class SortedMap {
    private class TreeNode {
        TreeNode left;
        TreeNode right;
    }
}

你可以在一个地方对你的类进行完整的定义,你不需要跳过任何PIMPL环来定义你的类是如何工作的,外部世界也不需要看到你的任何实现.

如果TreeNode类是外部的,那么您要么将所有字段设置为public,要么创建一组get/set个方法来使用它.外界将会有另一类人污染他们的智能感知.

.net相关问答推荐

.NET 7,8 System.Text.Json反序列化多态参数

C#:如何构造异步/等待代码,其中许多请求是针对相同的、返回缓慢的数据发出的,这可以满足所有请求

.NET MAUI ListView - ObservableCollection - 在异步方法期间不更新

为什么不能使用 null 作为 Dictionary 的键?

是否有任何 x 次的 for 循环的更短/更简单的版本?

.NET 中是否有一种简单的方法来获得数字的st、nd、rd和th结尾?

如何根据新的安全策略在 .Net 中发送邮箱?

使用多个 MemoryCache 实例

如何更改 double.ToString() 中小数点的符号?

何时在 C#/.NET 中使用指针?

检索字典值最佳实践

迭代器和枚举器的区别

一个接口是否应该继承另一个接口

ReaderWriterLockSlim 什么时候比简单的锁更好?

如何仅在需要时提升权限?

为什么要使用 C# 类 System.Random 而不是 System.Security.Cryptography.RandomNumberGenerator?

具有不同身份验证标头的 HttpClient 单个实例

System.Array.CopyTo() 和 System.Array.Clone() 之间的区别

模拟和单元测试需要时如何抛出 SqlException?

LINQ 可以与 IEnumerable 一起使用吗?