0

我偶然发现了组织如下的代码项目:

Namespace TheProject
{
    public class SerialPortManager
    {
        public class RingBuffer
        {
            // Clears the buffer
            public void Clear(SerialPortManager theManager)
            {
            }
        }
    }
}

下面是一个方法调用的例子:

spm.RingBuffer.Clear(spm);

我很惊讶这段代码不会导致程序崩溃。以这种方式组织代码的一些含义是什么?这会导致内存泄漏吗?我可能会看到哪些其他问题?或者这是组织代码的一种合法但古怪的方式?

4

2 回答 2

5

Not at all. It's perfectly legit. RingBuffer is a class that is part of SeriarPortManager... but it needs to know which SerialPortManager to use to clear the proper buffer.

于 2013-07-09T00:36:40.457 回答
1

RingBuffer不是对象的一部分,而是的一部分。也就是说,它根本与当前实例无关,因此没有与此相关的含义。实际上,您发布的方法调用无效,因为您只能RingBufferSerialPortManager类访问,而不能从它的实例访问。

将类定义为嵌套的唯一影响是它的访问方式。当嵌套类是public时,包含类只是它的命名空间,但它也可能是private,或者protected如果它应该只能从包含类或其继承者访问。

于 2013-07-09T01:56:24.970 回答