What is the equivalent of a 'friend' keyword in C Sharp?
How do I use the 'internal' keyword?
I have read that 'internal' keyword is a replacement for 'friend' in C#.
I am using a DLL in my C# project that I have the source code for and yet I do not want to modify the existing code. I have inherited the class and I can use my inherited class any way I want. The problem is that most of the code in the parent class has protected methods. Will using a friend somehow make it possible to access or call these protected methods?
Internal is the equivalent of friend. A protected method is only available within the same class or from an inheritor. If you're trying to expose protected methods from an inheritor, you can wrap them in public methods.
You can use the keyword access modifier
internal
to declare a type or type member as accessible to code in the same assembly only.You can use the
InternalsVisibleToAttribute
class defined inSystem.Rutime.CompilerServices
to declare a type as accessible to code in the same assembly or a specified assembly only.You use the first as you use any other access modifier such as
private
. To wit:You use the second as follows:
Both of these can rightly be considered the equivalent of
friend
in C#.Methods that are
protected
are already available to derived classes.No, "internal" is not the same as "friend" (at least the C++ 'friend')
friend specifies that this class is only accessible by ONE, particular class.
internal specifies that this class is accessible by ANY class in the assembly.
Your subclass will be able to access the protected members of the class you inherit.
Are you looking to give access to these protected members to another class?
1) Internal is the C# equivelant of the VB.NET 'friend' keyword, as you have guessed (as opposed to a replacement)
2) Usage is as follows
3) It, basically, is an access modifier that stipulates that the accessibility of the class / function / vairiable / property marked as internal is as if it were public to the Assembly it is compiled in, and private to any other assemblies