一.写在前面的话

好久没有停下来总结自己,转眼间15年过去好些天,回首过去的日子,亦或失去,亦或所得!生活的节奏,常常让我们带着急急忙忙的节奏去追赶,也许这并不是每个人所期望的生活方式!于他人,于自己,都是平凡生活中的小人物,不奢求荣华富贵,不祈求飞黄腾达,但求得心安理得,平安无恙,拥有属于自己的那一份小幸福足以!从本篇开始,慢慢悉基础,不急不躁,一步步总结,沉淀自己。也希望和各位高手们学习,愿意虚心接受你们的建议。

二.前言

C#中为了数据的安全性以及代码的拓展,定了几种访问级别,根据对应的访问修饰符,可以获取Class里面对应的字段、属性、方法等。

常见的访问修饰符有:
(1)public 公有访问。不受任何限制。
(2)private 私有访问。只限于本类成员访问,子类。
(3)protected 保护访问。只限于本类和子类访问。
(4)internal 内部访问。只限于本项目内访问,其他不能访问。
(5)protected internal 内部保护访问。只限于本项目或是子类访问,其他不能访问

根据MSDN上面的解释,我们也可以理解对应修饰符的作用。https://msdn.microsoft.com/zh-cn/library/wxh6fsc7.aspx

三.常见成员类型的访问修饰符

(1)接口(interface)

接口成员访问修饰符默认为public,且不能显示使用访问修饰符。

(2)类(class)
构造函数默认为public访问修饰符。
析构函数不能显示使用访问修饰符且默认为private访问修饰符。
类的成员默认访问修饰符为private;

(3)枚举(enum)
枚举类型成员默认为public访问修饰符,且不能显示使用修饰符。

(4)结构(struct)
结构成员默认为private修饰符。
结构成员无法声明为protected成员,因为结构不支持继承。

(5)嵌套类型
嵌套类型的默认访问修饰符为private。 和类,结构的成员默认访问类型一致。

四.访问修饰符测试

(1) 定义程序集AccessModifiersOne,添加DoData.cs类,分别在类中定义相关修饰符的方法。

可以看到在DoData.cs中,通过方法GetNeedData均可以访问对应的方法,GetPublicData、GetPrivateData、
GetInternalData、GetProtectedData、GetProtectedInternalData。在自身Class中访问方法不受限制。

/********************************************************************************
** auth: liupeng
** date: 2016/1/11 星期一 16:14:25
** desc: 访问修饰符
** Ver.:  V1.0.0
*********************************************************************************/namespace AccessModifiersOne
{public class DoData{/// <summary>/// 公共方法/// </summary>/// <returns></returns>public string GetPublicData(){return "My Name Is Public Data";}/// <summary>/// 私有方法/// </summary>/// <returns></returns>private string GetPrivateData(){return "My Name Is Private Data";}/// <summary>/// 受保护方法/// </summary>/// <returns></returns>protected string GetProtectedData(){return "My Name Is Protected Date";}/// <summary>/// 程序集级别方法/// </summary>/// <returns></returns>internal string GetInternalData(){return "My Name Is Internal Data";}/// <summary>/// 受保护程序集级别方法/// </summary>/// <returns></returns>protected internal string GetProtectedInternalData(){return "My Name Is Prtected Internal Data";}/// <summary>/// 取数据/// </summary>public void GetNeedData(){this.GetPublicData();this.GetPrivateData();this.GetInternalData();this.GetProtectedData();this.GetProtectedInternalData();}}
}

(2)在AccessModifiersOne程序集中添加DoDataTwo.cs,实例化一个DoData对象,可以看到对象只能访问到GetPublicData
、GetInternalData、GetProtectedInternalData方法,其中GetPrivateData、GetProtectedData方法不能访问到,证实了private不对外访问。

/********************************************************************************
** auth: liupeng
** date: 2016/1/11 星期一 16:28:15
** desc: 尚未编写描述
** Ver.:  V1.0.0
*********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace AccessModifiersOne
{class DoDataTwo{public void GetNeedData(){var needDataObj = new DoData();needDataObj.GetPublicData();needDataObj.GetInternalData();needDataObj.GetProtectedInternalData();}}
}

(3)在AccessModifiersOne程序集中添加DoDataThree.cs,同时继承DoData.cs,实例化一个DoDataThree对象,可以看到该对象可以访问GetPublicData、
GetProtectedData、GetInternalData、GetProtectedInternalData方法,证实了protected在自身类和继承类中可以访问。

/********************************************************************************
** auth: liupeng
** date: 2016/1/11 星期一 16:33:08
** desc: 尚未编写描述
** Ver.:  V1.0.0
*********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace AccessModifiersOne
{public class DoDataThree : DoData{public void GetNeedAnotherData(){var needDataObj = new DoDataThree();needDataObj.GetPublicData();needDataObj.GetInternalData();needDataObj.GetProtectedInternalData();//访问父类的protect方法base.GetProtectedData();}}
}

(4)新建程序集AccessModifiersTwo,同时添加对AccessModifiersOne程序集的引用,添加GetData.cs,实例化一个DoData对象,通过实例化对象,可以看到
只能调用GetPublicData,证实了public访问无限制。

/********************************************************************************
** auth: liupeng
** date: 2016/1/11 星期一 16:37:35
** desc: 尚未编写描述
** Ver.:  V1.0.0
*********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AccessModifiersOne;namespace AccessModifiersTwo
{public class GetData{public void GetNeedData(){var needDataObj = new DoData();needDataObj.GetPublicData();}}
}

五.结束语

2016年1月瞬息间又过了差不多半个月,时间的在心头的感觉默默然,活在当下,不期盼改变世界,至少先改变自己!一步一脚印,做出来!

一个自己维护的微信公众号,目前文章不多,希望接下来的日子,会一直更新下去,写自己的生活,分享技术,希望热爱生活的技术宅,一起交流!

转载于:https://www.cnblogs.com/liupeng61624/p/5122192.html

C#基础回顾(一)—C#访问修饰符相关推荐

  1. java 修饰符 访问控制符_《Java基础知识》Java访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public classclassName {//body of class }private boolea ...

  2. java访问修饰符详解——学java,零基础不怕,不只要理论,更要实践+项目,a href=http://www.bjweixin.com太原维信科技提供 /a...

    java访问修饰符详解--学java,零基础不怕,不只要理论,更要实践+项目 <a href=http://www.bjweixin.com>太原维信科技提供 </a> pub ...

  3. 访问修饰符作用范围由大到小是_9个java基础小知识

    一.面向对象和面向过程的区别 1. 面向过程 : 面向过程性能比面向对象高.因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考虑因素时(例如单片机.嵌入式开发.Linux/Uni ...

  4. [.net基础]访问修饰符

    标题:[.net基础]访问修饰符 一.前言 基础掌握不牢固啊,所以记录下来. 二.方法访问修饰符Internal (1).创建工程ParentAndSon (2).添加类ModelA namespac ...

  5. 语法基础(三. 类,属性,方法,方法重载,方法重写,构造方法,访问修饰符)

    语法基础(三. 类,属性,方法,方法重载,方法重写,构造方法,访问修饰符) (如有错误,欢迎指正,感谢!) 类 类是面向对象的程序设计中的概念,实现信息的封装 概念: 类就是拥有相等行为和相同的属性的 ...

  6. day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上/下造型,main方法,抽象类,接口,设计模式,异常,内部类

    1 Day06–面向对象1 1.1 面向对象 1.1.1 概念 推荐看的书:Thinking in java 概念:所谓的面向对象是一种编程思想,通过这种思想可以把生活中的复杂事情变得简单化,从原来的 ...

  7. 【Java基础】多态、equals、造型cast、访问修饰符(public、protected、default、private)、static、final

    1.面型对象–多态 多态的概念:多态性就是指同样的消息被类的不同的对象接收时导致的完全不同的行为的一种现象.这里的消息即对类成员函数的调用. 实现上面调用宠物叫,每种宠物有各自的叫声 public c ...

  8. java基础之访问修饰符

    java基础之访问修饰符: java中一共有四种访问修饰符号,用于控制方法和属性的访问权限(范围): 1.公开级别:public 对外公开 2.受保护级别:protected 对子类和同一个包中的类公 ...

  9. day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上_下造型,main方法,抽象类,接口,设计模式,异常,内部类

    1 Day06–面向对象1 1.1 面向对象 1.1.1 概念 推荐看的书:Thinking in java 概念:所谓的面向对象是一种编程思想,通过这种思想可以把生活中的复杂事情变得简单化,从原来的 ...

  10. Java基础:Java中四种访问修饰符

    一.背景. 这篇文章主要介绍了Java中四种访问修饰符详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下.放假在家里休息,闲来无事,想 ...

最新文章

  1. C# 如何在ComboBox输入文字改变时,触发事件?
  2. 爬虫实战--爬取1000位小姐姐照片,刷新你三观颜值!
  3. 论分层思想在各行各业的应用
  4. 检查 linux guest vm 使用的什么 虚拟化技术
  5. QQ2007退出市场
  6. 唤起那些年你对IDL的记忆(一)
  7. android fragment 设置透明,Android透明DialogFragment
  8. resnet 25 训练人脸识别
  9. [转]唐骏谈职场 —— 管理者要学会让员工感动
  10. 9. 设计二个函数分别计算sinx和cosx_Excel技巧篇(一):超级好用的几个函数
  11. echo print printf() sprintf()区别
  12. win10开机出现两个系统
  13. 2021-08-10 idea 事务的操作
  14. 路由器刷固件——斐讯路由器FIR300M刷OpenWrt固件教程
  15. 老版本xcode下载_iOS秘籍】-下载历史版本App超详细教程
  16. Centos 7 Opencv安装使用
  17. 【新手上路常见问答】关于物联网设计
  18. cv2.cvtColor() 的使用
  19. linux hci0 进程,教程 - 在 Azure Stack HCI 上的 AKS 中部署 Linux 应用程序 - AKS-HCI | Microsoft Docs...
  20. JavaWeb(JSP中的JSTL核心标签学习) c:foreach报错500? 错误原因:ArrayList<String> people = new ArrayList<>()

热门文章

  1. C++ std::thread::hardware_concurrency() 获取CPU核心数
  2. DevOps使用教程 华为云(7)团队绩效评估 工时统计
  3. 区块链 hyperledger fabric的系统链码有哪些类型 LSCC ESCC VSCC CSCC是什么
  4. ++x 和 x++的区别
  5. 基于springboot+vue的智慧教室预约系统(前后端分离)
  6. 在已有的服务器上如何部署网站,如何在云服务器上部署网站
  7. java方法语句错误需要标识符_java错误需要标识符_Java错误 找不到符号
  8. zerorpc java_Zerorpc 支持暴露多个远程Api接口类
  9. PHP设计模式 之 单例模式(封装PDO)
  10. Ubuntu 手动挂载U盘