将一个对象传递给同一对象内的方法会产生什么后果
本文关键字:方法 后果 什么 对象 一个对象 | 更新日期: 2023-09-27 18:21:39
我偶然发现了一个代码项目,它的组织方式如下:
Namespace TheProject
{
public class SerialPortManager
{
public class RingBuffer
{
// Clears the buffer
public void Clear(SerialPortManager theManager)
{
}
}
}
}
下面是一个方法调用的例子:
spm.RingBuffer.Clear(spm);
我很惊讶这个代码没有导致程序崩溃。以这种方式组织代码的一些含义是什么?这会导致内存泄漏吗?我还可能看到其他什么问题?或者这是一种合法但古怪的代码组织方式?
一点也不。这是完全合法的。RingBuffer
是SeriarPortManager
的一个类。。。但是它需要知道使用哪个CCD_ 3来清除适当的缓冲器。
RingBuffer
不是对象的一部分,而是类。也就是说,它根本不与当前实例绑定,因此没有与此相关的含义。事实上,您发布的方法调用是无效的,因为您只能从SerialPortManager
类访问RingBuffer
,而不能从它的实例访问
将类定义为嵌套的唯一效果是访问它的方式。当嵌套类是public
时,包含类只是它的命名空间,但如果它只能从包含类或其继承者访问,它也可以是private
或protected
。