Internal vs. Private Access Modifiers

后端 未结 7 1310
野性不改
野性不改 2020-11-27 09:30

What is the difference between the internal and private access modifiers in C#?

相关标签:
7条回答
  • 2020-11-27 09:39

    Internal will allow you to reference, say, a Data Access static class (for thread safety) between multiple business logic classes, while not subscribing them to inherit that class/trip over each other in connection pools, and to ultimately avoid allowing a DAL class to promote access at the public level. This has countless backings in design and best practices.

    Entity Framework makes good use of this type of access

    0 讨论(0)
  • 2020-11-27 09:40

    Find an explanation below. You can check this link for more details - http://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html

    Private: - Private members are only accessible within the own type (Own class).

    Internal: - Internal member are accessible only within the assembly by inheritance (its derived type) or by instance of class.

    enter image description here

    Reference :

    dotnetbull - what is access modifier in c#

    0 讨论(0)
  • 2020-11-27 09:44

    internal members are visible to all code in the assembly they are declared in.
    (And to other assemblies referenced using the [InternalsVisibleTo] attribute)

    private members are visible only to the declaring class. (including nested classes)

    An outer (non-nested) class cannot be declared private, as there is no containing scope to make it private to.

    To answer the question you forgot to ask, protected members are like private members, but are also visible in all classes that inherit the declaring type. (But only on an expression of at least the type of the current class)

    0 讨论(0)
  • 2020-11-27 09:45

    private - encapsulations in class/scope/struct ect'.

    internal - encapsulation in assemblies.

    0 讨论(0)
  • 2020-11-27 09:47

    Private members are accessible only within the body of the class or the struct in which they are declared.

    Internal types or members are accessible only within files in the same assembly

    0 讨论(0)
  • 2020-11-27 09:57

    internal members are accessible within the assembly (only accessible in the same project)

    private members are accessible within the same class

    Example for Beginners

    There are 2 projects in a solution (Project1, Project2) and Project1 has a reference to Project2.

    • Public method written in Project2 will be accessible in Project2 and the Project1
    • Internal method written in Project2 will be accessible in Project2 only but not in Project1
    • private method written in class1 of Project2 will only be accessible to the same class. It will neither be accessible in other classes of Project 2 not in Project 1.
    0 讨论(0)
提交回复
热议问题