1.五种访问修饰符包括哪些?

public、private、protected、internal、protected internal

2.五种访问修饰符的作用范围?

public  :公有访问。不受任何限制。
private  : 私有访问。只限于本类成员访问,子类,实例都不能访问。
protected  :保护访问。只限于本类和子类访问,实例不能访问。
internal  :内部访问。只限于本项目内访问,其他不能访问。
protected internal : 内部保护访问。只限于本项目或是子类访问,其他不能访问

实例讲解一下这五种访问修饰符的作用范围:

基础代码:

  1     class BaseClass
2 {
3 public string GetaPublicString()
4 {
5 return "Public String";
6 }
7
8 protected string GetaProtectedString()
9 {
10 return "Protected String";
11 }
12
13 private string GetaPrivateString()
14 {
15 return "Private String";
16 }
17
18 internal string GetaInternalString()
19 {
20 return "Internal String";
21 }
22
23 protected internal string GetaProtectedInternalString()
24 {
25 return "Protected Internal String";
26 }
27 public void Test()
28 {
29
30 }
31
32 }

测试private作用范围:

本类中:

图1

结论:在BaseClass类中,在方法Test()中,可以调用私有方法GetaPrivateString()

子类中:

图2

结论:在AClass中,只继承了父类,在方法Test2()中,调用父类的方法,没有GetaPrivateString(),说明子类没法调用私有方法

实例中:

图3

结论:在Main方法中new了一个BaseClass实例,对象调用没有GetaPrivateString(),说明实例没法调用私有方法

----------------------------------------------------------------------------------------------------------------------------------

测试protected作用范围:

本类中:

看图1

结论:在BaseClass类中,在方法Test()中,可以调用方法GetaProtectedString()

子类中(一):

看图2

结论:在AClass中,只继承了父类,在方法Test2()中,调用父类的方法,有GetaProtectedString(),说明子类可以调用GetaProtectedString()方法

子类中(二):

新建一个项目,并引用之前的项目,创建子类BClass并继承父类:

图4

结论:子类和父类不在同一个程序集内,但是子类可以调用GetaProtectedString(),说明虽然不在一个程序集内,但是依然可以调用GetaProtectedString()方法

实例中:

看图3

结论:在Main方法中new了一个BaseClass实例,对象调用没有GetaProtectedString(),说明实例没法调用GetaProtectedString()方法

-------------------------------------------------------------------------------------------------------------------------------------

测试Internal作用范围:

通过以上图1,图2,图3,可以看出来在本类中,子类中,实例中都可以调用GetaInternalString()方法。

通过图4,可以看出来,不在同一个程序集内,不可以调用GetaInternalString()方法。

新建一个项目,并引用之前的项目:

图5

结论:在新实例的方法中,new了一个BaseClass实例,对象调用没有GetaInternalString(),说明实例没法调用GetaInternalString()方法

------------------------------------------------------------------------------------------------------------------------------------

测试protected  Internal作用范围:

通过以上图1,图2,图3,可以看出来在本类中,子类中,实例中都可以调用GetaProtectedInternalString()方法。

通过图4,可以看出来,不在同一个程序集内,可以调用GetaProtectedInternalString()方法。

通过图5,可以看出来,不在同一个程序集内,new了一个BaseClass实例,对象调用没有GetaProtectedInternalString(),说明实例没法调用GetaProtectedInternalString()方法

-----------------------------------------------------------------------------------------------------------------------------------

测试public作用范围:

通过以上图例,所有情况都可以调用GetaPublicString()方法。

C#中五种访问修饰符作用范围 public、private、protected、internal、protected internal的更多相关文章

  1. C#的五种访问修饰符

    简述: 所有类型和类型成员都具有可访问性级别,用来控制是否可以在您程序集的其他代码中或其他程序集中使用它们. 可使用访问修饰符指定声明类型或成员的可访问性. 在C#语言中,共有五种访问修饰符:publ ...

  2. java中四种访问修饰符

    Java中的四种访问修饰符:public.protected.default(无修饰符,默认).private. 四种修饰符可修饰的成分(类.方法.成员变量)   public protected d ...

  3. JAVA 中的权限访问修饰符(public,protected,default,private )

    JAVA中有四个权限访问修饰符:public,protected,default,private 注意:这里讲的是对类中属性和方法的访问权限,并不是类的访问权限 1.default:包访问权限 如果什 ...

  4. java中四种访问修饰符区别及详解全过程

    客户端程序员:即在其应用中使用数据类型的类消费者,他的目标是收集各种用来实现快速应用开发的类. 类创建者:即创建新数据类型的程序员,目标是构建类. 访问控制存在的原因:a.让客户端程序员无法触及他们不 ...

  5. C#中的五个访问修饰符

    一.public, private, protected, internal, protected internal 1.public : 公开的, 公共的 2.private : 私有的 (只能在当 ...

  6. Java语言中有4种访问修饰符

    转载:http://wuhaidong.iteye.com/blog/851754 Java语言中有4种访问修饰符 在Java语言中有4中访问修饰符:package(默认).private.publi ...

  7. C#中的默认访问修饰符

    1.命名空间下的元素的默认访问修饰符 public : 同一程序集的其他任何代码或引用该程序集的其他程序集都可以访问该类型或成员.internal : 同一程序集中的任何代码都可以访问该类型或成员,但 ...

  8. Java入门系列之访问修饰符作用范围

    前言 之前以为Java和C#中访问修饰符差不多一样,后面才了解到还是有些差异,本节只讲解学习Java中访问修饰符一些需要注意的地方或者从概念上不太好理解我们会通过实际例子来说明,若有错误之处,还请批评 ...

  9. java四种访问修饰符及各自的权限

    1.public,即共有的,是访问权限限制最宽的修饰符.被public修饰的类.属性.及方法不仅可以跨类访问,而且可以跨包访问. 2. protected,即保护访问权限,是介于public和priv ...

随机推荐

  1. Evaluate X and Y returned from the differential equation solvers using printput frequency in Python的代码

    把内容过程中经常用到的一些内容段做个备份,如下的内容是关于Evaluate X and Y returned from the differential equation solvers using ...

  2. primer3批量设计引物

    核心程序调用 Primer3_core,基本用法: primer3_core [ -format_output ] [ -default_version=1|-default_version=2 ] ...

  3. prometheus告警插件-alertmanager

    prometheus本身不支持告警功能,主要通过插件alertmanage来实现告警.AlertManager用于接收Prometheus发送的告警并对于告警进行一系列的处理后发送给指定的用户. pr ...

  4. Matlab 奇异值、奇异矩阵、svd函数

    奇异值: 奇异值分解法是线性代数中一种重要的矩阵分解法,在信号处理.统计学等领域有重要应用. 定义:设A为m*n阶矩阵,A'表示A的转置矩阵,A'*A的n个特征值的非负平方根叫作A的奇异值.记为σi( ...

  5. 缓存之Memcache

    Memcache Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. ...

  6. vue-cli webpack配置 简单分析

    vue-cli webpack配置分析 入口 从package.json可以看到开发和生产环境的入口. "scripts": { "dev": "no ...

  7. Failed to install the hcmon driver

    在安装虚拟机的时候出现“Failed to install the hcmon driver”错误,是之前VM没有卸载干净,提供两个参考解决方法: 1:在C盘的驱动文件夹也就是“C:\Windows\ ...

  8. Linux c使用gumbo库解析页面表单信息(二)

    一.如何在程序当中使用gumbo? 要想在代码中使用gumbo,仅仅包含gumbo头文件是不够的,必须在编译程序的时候加上-lgumbo选项,编译程序才会链接到gumbo库上面. 这是我编译gumbo ...

  9. Hibernate的增删改查(事务)

    Hibernate的事务: 1. 设置事务隔离级别都是用  自己进行存储的 二进制      十进制 read uncommitted   读未提交        0001         1 rea ...

  10. C# DotNetBar ribboncontrol子窗体的系统控件(最大最小关闭)在父窗体中多余显示

    初始效果: 重复的子窗体按钮,看着别扭,修改MdiSystemItemVisible = False;后效果: MdiSystemItemVisible的系统解释为: 为了解决这个问题,浪费了好几天. ...