我想知道为什么这行得通?
例如我有一些看起来像这样的执行器类:
public class Executor
{
public void Execute(Action action)
{
action();
}
}
现在我有一些需要执行的类,看起来像:
public class NeedToBeExecuted
{
public void Invoke()
{
Executor executor = new Executor();
executor.Execute(DoSomething);
}
private void DoSomething()
{
// do stuff private
}
}
我的问题是为什么这是我将私有(private)方法传递给其他类的工作?
这不是封装问题吗?
最佳答案
不,这不违反封装。
首先:类本身就是决定将委托(delegate)交给其私有(private)方法之一的东西!该类可以访问其私有(private)方法,如果它选择将对某个方法的引用传递给该方法的可访问性域之外的代码,那完全在其权利范围内。
第二:方法的可访问性域不限制方法可以被调用的地方。 它限制了可以通过名称查找方法的位置。 Executor
类从不使用name DoSomething
来调用私有(private)方法。它使用名称 action
。
关于c# - 代表的封装问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15586728/