Friend trong C++
Friend function/class truy cập được private/protected member của class khác.
Tương đương C#
C# không có friend. Cách gần nhất: Nested class (lồng lớp) truy cập private của outer class.
class Outer
{
private int secret = 42;
class Inner
{
public void Reveal(Outer o)
{
Console.WriteLine(o.secret); // Truy cập được private
}
}
}
Các cách khác:
internal- truy cập trong cùng assemblyprotected internal- assembly hoặc derived classprivate protected- cùng assembly và derived class- Interface + internal implementation
- Friend assemblies:
[assembly: InternalsVisibleTo("AssemblyName")]
Nested class là cách trực tiếp nhất mô phỏng friend.