欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#访问修饰符——public ,private , internal ,protected和protected internal

程序员文章站 2022-06-01 11:51:53
...

C#访问控制修饰符——public ,private , internal ,protected及protected internal

下面是C#访问控制修饰符——public ,private , internal ,protected及protected internal的特性,作用域,及C#成员类型的可修饰及默认修饰符的总结,及图解。

public 修饰的类,可以在整个系统的任意地方调用,是完全公开的.
public 关键字是类型和类型成员的访问修饰符。公共访问是允许的最高访问级别,对访问公共成员没有限制。
public 意味着在其后声明的所有成员对所有的人都可以取。

private 相反的,只能在类内部调用.任何实例,无法调用private调用.
private 关键字是一个成员访问修饰符。私有访问是允许的最低访问级别。私有成员只有在声明它们的类和结构体中才是可访问的。
private关键字意味着除了该类型的创建者和类的内部成员函数之外,任何人都不能存取这些成员。

internal 仅为同项目(这里的项目是只单独的项目,而不是整个解决方案)调用,按照我的理解,应该是和java的friendly一样的效果.
internal 关键字是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的。

protected 自己及自己的子类可以调用
protected 关键字是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问。

protected internal 内部保护访问。只限于本项目或是子类访问,其他不能访问

C#访问控制修饰符属性如下表:

C#访问修饰符——public ,private , internal ,protected和protected internal

C#成员类型的可修饰及默认修饰符如下表:

成员类型 默认修饰符 可被修饰符
enum public none
class private public、protected、internal、private、protected internal
interface public none
struct private public、internal、private

下面是帮助大家理解的代码:

using System;  
using System.Collections.Generic;  
using System.Text;  

namespace AccessModifier  
{  
  public class AccessModifierClass  
  {  
      public string GetPublicString()  
       {  
          return "Public String";  
       }  

      protected string GetProtectedString()  
       {  
          return "Protected String";  
       }  

       private string GetPrivateString()  
       {  
          return "Private String";  
       }  

       internal string GetInternalString()  
       {  
          return "Internal String";  
       }  

      protected internal string GetProtectedInternalString()  
       {  
          return "Protected Internal String";  
       }  

      void AvailableAccessModifier()  
      {  
       this.GetPublicString();  
       this.GetPrivateString();  
       this.GetInternalString();  
       this.GetProtectedInternalString();  
       this.GetProtectedString();  
      }  
   }  


  public class TestAccessModifierClass1  
   {  
       void AvailableAccessModifier()  
       {  
           AccessModifierClass item = new AccessModifierClass();  
           item.GetPublicString();  
           item.GetInternalString();  
           item.GetProtectedInternalString();  
       }  
   }  

   public class TestAccessModifierClass2 : AccessModifierClass  
   {  
       void AvailableAccessModifier()  
       {  
           AccessModifierClass item = new AccessModifierClass();  
           item.GetPublicString();  
           item.GetInternalString();  
           item.GetProtectedInternalString();  
           base.GetProtectedString();  
       }  
   }  
}