首先分享一段话 : 折腾不死,装逼不止!!!
在同一命名空间 (在java叫包) 中有一个 A类 和 B类 => 如代码所示
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApp1 8 { 9 class A 10 { 11 //修饰符: public(公开的) 吐槽: 刚刚开始学类的时候用的多 12 public int testa; 13 //修饰符:protected(保护的) 吐槽: 学到类的继承和多态会了解到 14 protected int testb; 15 //修饰符:private(私人的) 吐槽: 学到类的封装的时候了解到 16 private int testc; 17 /* 以上三种是我们用的最多的(自我感觉),下面介绍奇怪的几种 */ 18 19 //修饰符:internal(内部的) 吐槽:在写这篇博客的时候并没有用过 20 internal int testd; 21 //修饰符:protected internal(受保护的内部成员) 吐槽: 卧槽还能这样用?学到了 22 protected internal int teste; 23 //修饰符:private protected(私人的受保护成员) 吐槽:实在是秀,额出现的点状况 [汗颜] 24 private protected int testf; 25 26 27 //C#中如果不加修饰符默认为 private(私人的) 28 int a; 29 } 30 }
- public 基于A类来做示例。 既然是公开的就是无论哪里都能访问这个类或者字段 就像示例里写的main方法里创建对象后能点出来,这个在前期打代码的时候觉得很方便少了很多的步骤

- private
慢慢的开始用上了封装感觉这样更加符合道理,自己写的程序越来越高大尚,逻辑越来越清晰

细心的你可能发现了 爱心 和 五角心
- protected
继承 => 就和皇帝的儿子 继承皇位很相似因为儿子能拿到爸爸留下来的遗产,在程序里是子类能调用父类的字段和方法

因为program类不是A类的子类所以不能访问,什么是子类的这里涉及继承直接上代码不细讲,可以看到可以用this点出来了

- internal
这个东西就感觉没很大的意义,就是只能在当前项目下可以用,比如两个项目 TEST1 , TEST2 =>在test1中引用了2 ,如果有一个类或者变量是internal级别就不能点(.)出来或者说是 创建对象,调用
- protected internal
- private protected 这个只能在C#7.2以上才能用,要不然报错
最后两个很奇葩的请参考MSDN文档
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/protected-internal
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/private-protected
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
总结
其实这些访问修饰符都是慢慢接触到的,一开始就去研究它其实很好只是很难理解,这个时候就会去学习到其他的新知识点 比如 继承,多态,静态,等等~~
在研究通了之后你就发现写程序比你的同学思路来的更加清晰,这就是进步想要进步是有点困难的 [偷笑],然后你读完我的博客就发现了 MSDN 这个宝贝,第一次写博客格式部署不是很完美
-----就是懒来打我啊!
浙公网安备 33010602011771号