【C#】——访问修饰符

【背景】

     访问修饰符是我们的老朋友了,当我们敲代码时怎么也点(.)不出来的时候,可能要考虑访问限制的问题了。最近的学习中,我感觉修饰符不仅仅是public 和private 那么简单,下面是进一步的介绍,供大家学习交流。

【正文】

     【访问修饰符有哪些?】

      

  •    Public 

                 同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。

  •    Private

                  只有同一类或结构中的代码可以访问该类型或成员。

  •   Protected

                 只有同一类或结构或者此类的派生类中的代码才可以访问的类型或成员。

  •    Internal

                 同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以。

  •   Protected internal

                由其声明的程序集或另一个程序集派生的类中任何代码都可访问得类型或成员。从另一个程序集进行访问必须在类声明中发生,该类声明派生自其中声明受保护的内部元素的类,并且必须通过派生的类类型的实例发生。

             

     【示例说明】

          ——  Public   公有的,是类型和类型成员的访问修饰符,访问不受限制。

        

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();  
        }  
     }  
         —— Protected  受保护的,是一个成员访问修饰符。只能在它的类和它的派生类中访问。
         
 public class TestAccessModifierClass1  
 //同一程序集不同类中,GetPrivateString和GetProtectedString方法不能访问
     {  
         void AvailableAccessModifier()  
         {  
             AccessModifierClass item = new AccessModifierClass();  
             item.GetPublicString();  
             item.GetInternalString();  
             item.GetProtectedInternalString();  
         }  
     }  
          ——  Private  私有的,是一个成员访问修饰符。只有在声明它们的类和结构中才可以访问。
//同一程序集的派生类中,GetPrivateString方法不能访问,
     GetProtectedString方法这时可以访问了   
public class TestAccessModifierClass2 : AccessModifierClass   
     {  
         void AvailableAccessModifier()  
         {  
             AccessModifierClass item = new AccessModifierClass();  
             item.GetPublicString();  
             item.GetInternalString();  
             base.GetProtectedInternalString();  
             base.GetProtectedString();  
         }  
     }  
 }  

          —— Internal  内部的,是类型和类型成员的访问修饰符。同一个程序集中的所有类都可以访问.
          —— Protected internal  访问级别为internal或protected。同一个程序集中的所有类 或者 派生类可以访问。
using System;
using System.Collections.Generic;
using System.Text;
using AccessModifier;  //这里的不同程序集指的是不同命名空间
namespace AccessModifier1
{
    public class TestAccessModifierClass3 : AccessModifierClass
    {
        void AvailableAccessModifier()
        {
               
        base.GetPublicString();
            base.GetProtectedString(); 
            //TestAccessModifierClass3 类无法访问到  AccessModifierClass 的 GetInternalString 成员,因为它们不在同一个程序集里。
              但却可以访问到 sGetProtectedInternalString 方法,因为 TestAccessModifierClass3 是 AccessModifierClass 的继承类。
            base.GetProtectedInternalString(); 
        }
    }
}

    【访问修饰符集合】

    
访问修饰符说明一览表
声明的可访问性
含义
public
访问不受限制
protected
访问仅限于包含类或从包含类派生的类型,实例不能访问。
internal
访问仅限于的当前程序集,其他不能访问
peotected internal
访问仅限于当前程序集或是子类访问,其他不能访问。
private
访问仅限于包含类型,本类成员访问,子类、实例都不能访问。



类型成员默认的可访问性
属于默认的成员可访问性
该成员允许的声明的可访问性
enum
public
class


private

public
protected
internal
private
protected internal
interface


public

struct
private
public 
internal
private

【总结】

       当你不知道一件事情是否正确的时候,与其焦灼忧虑,不如放手一试,去实践~~

       c#的访问修饰符就先介绍到这里,java的访问修饰符与之差不多,可以对比着来学习,小编在查阅资料时发现还有声明修饰符、程序集的理解等等问题等我去探究,待小编前去一探究竟,结果将在后续博客中分享,欢迎大家多多指教~~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的大白啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值