将对象传递给同一对象中的方法有什么后果?

时间:2013-07-09 00:32:54

标签: c# .net oop

我偶然发现了类似以下内容的代码项目:

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

以下是方法调用的示例:

spm.RingBuffer.Clear(spm);

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

2 个答案:

答案 0 :(得分:5)

完全没有。它非常合法。 RingBuffer是属于SeriarPortManager的一个类......但它需要知道使用哪个SerialPortManager来清除正确的缓冲区。

答案 1 :(得分:1)

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

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