C#中五种访问修饰符作用范围实例详解

在c#语言中,共有五种访问修饰符:public、privateprotectedinternal、protected internal。作用范围如下表:
访问修饰符 说明
public 公有访问。不受任何限制。
private 私有访问。只限于本类成员访问,子类,实例都不能访问。
protected 保护访问。只限于本类和子类访问,实例不能访问。
internal 内部访问。只限于本项目内访问,其他不能访问。
protected internal 内部保护访问。只限于本项目或是子类访问,其他不能访问
c#成员类型的可修饰及默认修饰符如下表:
成员类型 默认修饰符 可被修饰符
enum public none
class private public、protected、internal、private、
protected internal
interface public none
struct private public、internal、private
下面我就结合实例,讲一下public、private、protected、internal和protected internal的作用范围。
如下代码:

[csharp] view plain copy 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();           }       }   }

 AccessModifierClass 是我们的访问修饰符类,里面有五种访问修饰符方法,可见在 AccessModifierClass 类里面的 AvailableAccessModifier() 方法可以访问所有的方法。
在 TestAccessModifierClass1 类中的 AvailableAccessModifier() 方法只能访问 public、Internal 和 Protected Internal 方法。

TestAccessModifierClass2 类继承自 AccessModifierClass 类,所以它的 AvailableAccessModifier() 方法可以访问 public,internal,protected和protected internal 方法。

以上就是C#中五种访问修饰符作用范围实例详解的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1432474.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 08:06:44
下一篇 2025年12月12日 22:51:45

相关推荐

  • C#中foreach实例代码

    foreach可以遍历一些数据类型。由图可知,被遍历的数据类型必须拥有getenumerator的公共方法。 在使用foreach遍历时涉及到var推断类型,这时如何不是实现泛型版本,则一律是object类型。 foreach遍历只能读取数据,不能修改数据,可以通过string检测,string是可…

    2025年12月17日 好文分享
    000
  • 关于.net C# Sql数据库SQLHelper类实例代码

    using system;using system.collections.generic;using system.text;using system.collections;using system.data.sqlclient;using system.data;using system.co…

    好文分享 2025年12月17日
    000
  • C#线程控制的实例详解

    方案一:    调用线程控制方法.启动:Thread.Start();停止:Thread.Abort();暂停:Thread.Suspend();继续:Thread.Resume();   private void btn_Start_Click(object sender, EventArgs e…

    2025年12月17日
    000
  • 编写高性能 .NET的实例教程

    减少分配率 这个几乎不用解释,减少了内存的使用量,自然就减少gc回收时的压力,同时降低了内存碎片与cpu的使用量。你可以用一些方法来达到这一目的,但它可能会与其它设计相冲突。 你需要在设计对象时仔细检查每个它并问自己: 我真的需要这个对象吗? 这个字段是我需要的吗? 我能减少数组的尺寸吗? 我能缩小…

    好文分享 2025年12月17日
    000
  • 泛型的概述和具体使用

    一、泛型概述       泛型类和泛型方法兼复用性、类型安全和高效率于一身,是与之对应的非泛型的类和方法所不及。泛型广泛用于容器(collections)和对容器操作的方法中。.net framework 2.0的类库提供一个新的命名空间system.collections.generic,其中包含…

    好文分享 2025年12月17日
    000
  • 使用 VSCode 编写 .NET Core 项目的实例教程

    windows 开发环境搭建: 1.安装最新 VSCode,; 2.安装最新 .NET CORE,; 3. 在 VS Code 中获取 C# extension ;   一、创建C#项目 1.打开VS Code,从命令行打开预先定义的文件夹,如: E:NetCoredemo; 使用快键键调出命令行窗…

    2025年12月17日 好文分享
    000
  • Core实现全面扫盲贴的ASP方法详解

    本篇文章主要介绍了.net core,.net core是一个开源通用的开发框架,支持跨平台,即支持在window,macos,linux等系统上的开发和部署有兴趣的可以了解一下。 1. 前言 .NET发行至今已经过了十四个年头。随着版本的不断迭代更新,.NET在Windows平台上的表现也是越来越…

    2025年12月17日 好文分享
    000
  • .Net 垃圾回收机制原理(二)

    英文原文:Jeffrey Richter 编译:赵玉开 链接http://www.php.cn/ 上一篇文章介绍了.Net 垃圾回收的基本原理和垃圾回收执行Finalize方法的内部机制;这一篇我们看下弱引用对象,代,多线程垃圾回收,大对象处理以及和垃圾回收相关的性能计数器。让我们从弱引用对象说起,…

    2025年12月17日 好文分享
    000
  • .Net 垃圾回收机制原理(一)

    英文原文:Jeffrey Richter 编译:赵玉开 链接:http://www.php.cn/ 有了Microsoft.Net clr中的垃圾回收机制程序员不需要再关注什么时候释放内存,释放内存这件事儿完全由GC做了,对程序员来说是透明的。尽管如此,作为一个.Net程序员很有必要理解垃圾回收是如…

    2025年12月17日 好文分享
    000
  • .NET中异常处理的最佳实践(译)

    原文地址:点击打开链接 本文翻译自CodeProject上的一篇文章,原文地址。 目录 介绍 做最坏的打算 提前检查 不要信任外部数据 可信任的设备:摄像头、鼠标以及键盘  “写操作”同样可能失效 安全编程 不要抛出“new Exception()” 不要将重要的异常信息存储在Message属性中 …

    2025年12月17日
    000
  • .NET中的六个重要概念:栈、堆、值类型、引用类型、装箱和拆箱

    内容导读 •概述 •当你声明一个变量背后发生了什么?•堆和栈•值类型和引用类型•哪些是值类型,哪些是引用类型?•装箱和拆箱•装箱和拆箱的性能问题一、概述本文会阐述六个重要的概念:堆、栈、值类型、引用类型、装箱和拆箱。本文首先会通过阐述当你定义一个变量之后系统内部发生的改变开始讲解,然后将关注点转移到…

    2025年12月17日 好文分享
    000
  • .Net 垃圾回收和大对象处理

    英文原文:Maoni Stephens,编译:赵玉开(@玉开Sir) CLR垃圾回收器根据所占空间大小划分对象。大对象和小对象的处理方式有很大区别。比如内存碎片整理 —— 在内存中移动大对象的成本是昂贵的,让我们研究一下垃圾回收器是如何处理大对象的,大对象对程序性能有哪些潜在的影响。 大对象堆和垃圾…

    2025年12月17日 好文分享
    000
  • C# 中 10 个你真的应该学习(和使用!)的功能

    如果你开始探索c#或决定扩展你的知识,那么你应该学习这些有用的语言功能,这样做有助于简化代码,避免错误,节省大量的时间。    1)async / await 使用async / await-pattern允许在执行阻塞操作时解除UI /当前线程的阻塞。async / await-pattern的工…

    好文分享 2025年12月17日
    000
  • 关于.NET异常处理的思考(上)

    在项目开发中,对于系统和代码的稳定性和容错性都是有对应的要求。实际开发项目中的代码与样例代码的区别,更多的是在代码的运行的稳定性、容错性、扩展性的比较。 因为对于实现一个功能来说,实现功能的核心代码是一样的,可能只是在写法上优化而已,但是在实现某一个操作上使用的类来说,这一点是绝大多数时候是一样的。…

    好文分享 2025年12月17日
    000
  • .NET异常设计原则

    异常是使用.net时必然会遇到的问题,但是,有太多的开发人员没有从api设计的角度考虑这个问题。在大部分工作中,他们自始至终都知道需要捕获什么异常以及哪些异常需要写入全局日志。如果你设计了可以让你正确使用异常的api,则可以显著减少修复缺陷的时间。 谁的错? 异常设计背后的基本理论始于这样一个问题,…

    好文分享 2025年12月17日
    000
  • .NET编程之线程池内幕

    本文通过对.net4.5的threadpool源码的分析讲解揭示.net线程池的内幕,并总结threadpool设计的好与不足。 线程池的作用 线程池,顾名思义,线程对象池。Task和TPL都有用到线程池,所以了解线程池的内幕有助于你写出更好的程序。由于篇幅有限,在这里我只讲解以下核心 概念: 线程…

    好文分享 2025年12月17日
    000
  • .NET下几个服务框架介绍

    简介 在公司的服务多了以后,为了调用上的方便,同时为了以后的服务治理,一般都会使用一些服务框架,这里主要介绍我知道的几个服务框架,简析一下这些服务框架的基本概念。 可投入生产环境使用的 以下两个服务框架,我已经见过有公司投入到生产环境,所以对于稳定性,应该不需要有太大的担心。    ServiceS…

    2025年12月17日
    000
  • .NET多线程编程—并发集合

    并发集合 1 为什么使用并发集合? 原因主要有以下几点: System.Collections和System.Collections.Generic名称空间中所提供的经典列表、集合和数组都不是线程安全的,若无同步机制,他们不适合于接受并发的指令来添加和删除元素。 在并发代码中使用上述经典集合需要复杂…

    2025年12月17日
    000
  • .NET编程中Word/Excel 在线预览

    前言 近日项目中做到一个功能,需要上传附件后能够在线预览。之前也没做过这类似的,于是乎就查找了相关资料,.net实现office文件预览大概有这几种方式: 使用Microsoft的Office组件将文件直接转换为html文件(优点:代码实现最简单,工作强度最小。缺点:效果极差) 使用Microsof…

    2025年12月17日
    000
  • 记一次.NET代码重构(上)

    需求:是这样的,要开发一个短信发送的模板,不同客户可能会使用不同的模板,而不同的客户使用的变量参数也是不同的。 之前为了应急,线上已经完成了一个短信模板发送短信的功能,短信模板表也创建了,而且在表中已经新增了一条记录。我只需要做一个短信模板的增删改查界面就可以了,看上去我的任务挺简单的,老司机应该知…

    2025年12月17日 好文分享
    000

发表回复

登录后才能评论
关注微信