我正在研究一些遗留代码,并且遇到了一些我不确定的问题.我们有一个class y在另一个内部声明class x.Class y只是在里面使用class x但我的问题是为什么你不创建一个单独的类文件并放在class y那里而不是在其中声明它class x?这不是违反OOP的,或者只是风格问题,因为它只在本课程中使用过.我正在重构一些代码,我的第一反应是分离class y出它自己的文件.
namespace Library
{
   public class x
   {
      // methods, properties, local members of class x
      class y
      {
         // methods, properties, local members of class y
      }
   }
}
pli*_*nth 60
您创建了一个内部类,因为它只在类x的范围内使用,并且它在逻辑上适合于类x的因子/体系结构.
类y也可能知道x类的实现细节,这些细节并不是公众所知的.
Mar*_*ell 20
这具有权限含义.顶级"类y"将是"内部" - 但是,这里"y"对"x"是私有的.此方法有助于实现细节(例如缓存行等).同样,y可以访问所有私有状态x.
仿制药也有其含义; x<T>.y是通用的"T",继承自外部类.你可以在这里看到这里,Bar充分利用T- 并注意任何静态字段的Bar范围T.
class Foo<T> {
    void Test(T value) {
        Bar bar = new Bar();
        bar.Value = value;
    }
    class Bar {
        public T Value { get; set; }
    }
}
通常人们错误地认为他们需要定义Bar为Bar<T>- 这现在(有效地)是双重通用的 - 即Foo<TOld, T>- TOld现在(现在不可用)T来自哪里Foo<T>.所以不要这样做!或者,如果您希望它是双重通用的,请选择不同的名称.幸运的是,编译器警告你这个......
| 归档时间: | 
 | 
| 查看次数: | 48085 次 | 
| 最近记录: |