C#中五种访问修饰符作用范围 public、private、protected、internal、protected internal
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的更多相关文章
- C#的五种访问修饰符
简述: 所有类型和类型成员都具有可访问性级别,用来控制是否可以在您程序集的其他代码中或其他程序集中使用它们. 可使用访问修饰符指定声明类型或成员的可访问性. 在C#语言中,共有五种访问修饰符:publ ...
- java中四种访问修饰符
Java中的四种访问修饰符:public.protected.default(无修饰符,默认).private. 四种修饰符可修饰的成分(类.方法.成员变量) public protected d ...
- JAVA 中的权限访问修饰符(public,protected,default,private )
JAVA中有四个权限访问修饰符:public,protected,default,private 注意:这里讲的是对类中属性和方法的访问权限,并不是类的访问权限 1.default:包访问权限 如果什 ...
- java中四种访问修饰符区别及详解全过程
客户端程序员:即在其应用中使用数据类型的类消费者,他的目标是收集各种用来实现快速应用开发的类. 类创建者:即创建新数据类型的程序员,目标是构建类. 访问控制存在的原因:a.让客户端程序员无法触及他们不 ...
- C#中的五个访问修饰符
一.public, private, protected, internal, protected internal 1.public : 公开的, 公共的 2.private : 私有的 (只能在当 ...
- Java语言中有4种访问修饰符
转载:http://wuhaidong.iteye.com/blog/851754 Java语言中有4种访问修饰符 在Java语言中有4中访问修饰符:package(默认).private.publi ...
- C#中的默认访问修饰符
1.命名空间下的元素的默认访问修饰符 public : 同一程序集的其他任何代码或引用该程序集的其他程序集都可以访问该类型或成员.internal : 同一程序集中的任何代码都可以访问该类型或成员,但 ...
- Java入门系列之访问修饰符作用范围
前言 之前以为Java和C#中访问修饰符差不多一样,后面才了解到还是有些差异,本节只讲解学习Java中访问修饰符一些需要注意的地方或者从概念上不太好理解我们会通过实际例子来说明,若有错误之处,还请批评 ...
- java四种访问修饰符及各自的权限
1.public,即共有的,是访问权限限制最宽的修饰符.被public修饰的类.属性.及方法不仅可以跨类访问,而且可以跨包访问. 2. protected,即保护访问权限,是介于public和priv ...
随机推荐
- Genymotion模拟器无法直接安装APP
使用Genymotion模拟器安装APP的过程中,将我们的apk拖进去模拟器报以下错误: Genymotion官网常见问题解决办法汇集地址:https://www.genymotion.com/#!/ ...
- Python面向对象 -- 继承和多态、获取对象信息、实例属性和类属性
继承和多态 继承的好处: 1,子类可以使用父类的全部功能 2,多态:当子类和父类都存在相同的方法时,子类的方法会覆盖父类的方法,即调用时会调用子类的方法.这就是继承的另一个好处:多态. 多态: 调用方 ...
- 字体图标库 IcoMoon IconFont Font Awesome的使用
在项目开发的过程中,我们会经常用到一些图标.但是我们在使用这些图标时,往往会遇到失真的情况,而且图片数量很多的话,页面加载就越慢.所以,我们可以使用字体图标的方式来显示图标,字体图标任意放大缩小不会失 ...
- 小T牛 绿色版 18.08.0100
百度网盘 链接:https://pan.baidu.com/s/1g2PIMBR8YAdz5skH5ogFhw 密码:3o4k 小T牛 小T牛 绿色版 18.08.0100 意见反馈:qq(邮箱):6 ...
- Request中的各种地址
今天来得匆忙,先上图吧,稍后再整理!
- leetcode 230 二叉搜索树中第K小的元素
方法1:统计每个节点的子节点数目,当k>左子树节点数目时向左子树搜索,k=左子树节点数目时返回根节点,否则向右子树搜索. 方法2:递归中序遍历,这里开了O(n)空间的数组. class Solu ...
- Mysql生产指定时间段随机日期函数
UPDATE basicsale_b2b2c.basic_customer SET registerDate = ( from_unixtime( unix_timestamp('2017-01-01 ...
- Lapack求解线性方程组
可参见这两个页面: 1. http://www.culatools.com/dense/lapack/ 2. http://www.netlib.org/lapack/lug/node1.html 根 ...
- vue+富文本编辑器UEditor
vue+富文本编辑器UEditor 昨天的需求是把textarea换成富文本编辑器的形式, 网上找了几种富文本编辑器ueditor.tinymce等, 觉得ueditor实现双向绑定还挺有意思, 分享 ...
- ThinkPHP5.0 开发手册
ThinkPHP5.0开发手册地址 https://www.kancloud.cn/manual/thinkphp5/118003 此博文仅仅作为个人笔记存储,没有广告,宣传的意图