如何模拟C++;C#和VB.NET中的朋友?
因为有时候,我真的需要一个朋友 我可以想出以下窍门:如何模拟C++;C#和VB.NET中的朋友?,c#,c++,vb.net,friend,C#,C++,Vb.net,Friend,因为有时候,我真的需要一个朋友 我可以想出以下窍门: 只读包装类。friend保留指向可修改对象的指针,而其他人只能访问包装器 Write delegate-friend将对委托的引用作为参数之一提供给对象的构造函数,构造函数用可用于修改对象的私有方法的地址填充它 反思——显然是个坏主意。包括完整性 多个程序集-将您的朋友放在一个单独的程序集中,并设置您的修改器方法internal 公开可修改对象,但向修改器方法添加注释“这是一个基础结构方法-不要调用它!” 添加System.Componen
internal
System.ComponentModel.EditorBrowsable(System.ComponentModel)。
EditorBrowsableState.Never)
属性设置为您只希望朋友访问的成员,以对IntelliSense隐藏该成员public class Root
{
private int a; // accessible for friendroot
public int b;
public class FriendOfRoot
{
public int d;
}
}
编辑:如果这里提供的使用嵌套类模拟friend对您有用,那么在性能上它与常规类一样足够快(在编译中,所有事情都将确定,并且没有强制转换问题和开销)。您可能忘记了嵌套类型。当然,还有隐式接口实现。没有真正隐藏方法,但您需要做一些事情来访问它(转换到此接口)。如何使用嵌套类型来模拟friend?