我偶然发现了类似以下内容的代码项目:
Namespace TheProject
{
public class SerialPortManager
{
public class RingBuffer
{
// Clears the buffer
public void Clear(SerialPortManager theManager)
{
}
}
}
}
以下是方法调用的示例:
spm.RingBuffer.Clear(spm);
我很惊讶这段代码不会导致程序崩溃。以这种方式组织代码的一些含义是什么?这会导致内存泄漏吗?我可能会看到其他什么问题?或者这是组织代码的合法但古怪的方式吗?
答案 0 :(得分:5)
完全没有。它非常合法。 RingBuffer
是属于SeriarPortManager
的一个类......但它需要知道使用哪个SerialPortManager
来清除正确的缓冲区。
答案 1 :(得分:1)
RingBuffer
不属于对象,它是类的一部分。也就是说,它根本不依赖于当前实例,因此没有任何与此相关的含义。实际上,您发布的方法调用无效,因为您只能从RingBuffer
类访问SerialPortManager
,而不能从它的实例访问。
将类定义为嵌套的唯一效果是它的访问方式。当嵌套类为public
时,包含的类只是它的命名空间,但如果只能从包含的类或其继承者访问它,它也可以是private
或protected
。