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

来源:互联网 发布:ubuntu 17.04更新源 编辑:程序博客网 时间:2024/04/30 10:38

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#成员类型的可修饰及默认修饰符如下表:

成员类型 默认修饰符 可被修饰符 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();         }     }  }  
阅读全文
0 0
原创粉丝点击