VS默认的类前缀(访问控制符)是internal
VS默认的类前缀(访问控制符)是internal
大家都知道VS默认新建的class的时候,class前面是什么都没有的,按照规则,这个class的可见性是internal,但是说实话,很多人包括我在内,都知道internal是什么意思(程序集内部可见)但是很少有人去用这个默认的设定,而是习惯性的将其改为public,以至于很多时候觉得每次创建class都得去改动一下觉得很麻烦,然后去改动模版文件来让每次都生成。
我当然也不例外,一直也是这么做的,后来我看了CLR via C#还有其他一些深入介绍的书,我感觉微软的VS这么多年一直没有改动默认设定是有道理的,按照可见性最小原则,如果没有什么特别的需要,比如你要建立一个需要外部来访问的类库,必须将类设定为public,但是如果没有类似的需要,public则是不必要的,默认的internal就可以很好的满足需要了,最最主要的是,这样对类很安全。
认识到这一点,我也就决定开始更改我的习惯,以后除非必要,否则就使用默认的internal。
除了类,变量和方法也是如此,如果只是本类内使用,一律private,对外有专门的接口(public方法和属性等);
其实,这样的问题在一开始为了方便很多都没有注意到,也不理解,但是后来慢慢熟练了,明白了,就需要考虑了。
很多知识都是如此,学习的时候多问几个为什么,了解一下实际这个概念的应用,甚至反过想一下创作这个概念的人的思路和意图,往往有助于自己更深层次的去理解,也训练了自己的思维方式。
努力去写出好的代码。
VS默认的类前缀(访问控制符)是internal的更多相关文章
- java类的访问控制符与其他几个特殊修饰符的总结
1 访问控制符 1.1 字段或者方法的访问控制符 同一个类中 同一个包中 不同包中的子类 不同包中的非子类 private YES 默认(包可访问) YES YES prot ...
- java_类的访问控制符
1.分类: public protected default private是java中的访问控制修饰符. public String name; protected String name; Str ...
- Java知多少(19)访问修饰符(访问控制符)
Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: 1 public class className { 2 // body of class 3 } 4 pr ...
- Java访问修饰符(访问控制符)
Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...
- java中的访问控制符
首先来一张图: 对于一个类而言访问控制符只有一个public和默认无修饰符.其他的几个访问修饰符对于变量和方法都可以使用. 下面介绍具体的使用. 1. 公有访问控制符(public) Java的类是通 ...
- 《Java基础知识》Java访问修饰符(访问控制符)
Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...
- AJPFX关于java中可访问控制符和非访问控制符的详细总结
1.类的修饰符分为:可访问控制符和非访问控制符两种. 可访问控制符是:公共类修饰符 public 非访问控制符有:抽象类修饰符 abstract :最终类修饰符 final 1 )公共类修饰符 pub ...
- Java final类&所有构造方法均为private的类(类型说明符&访问控制符)
1. final是类型说明符,表示关闭继承,即final类不能有子类: 但final类可能可以在类外创建对象(即final类的构造方法可以不是private型): 在同一包中时,可以在任何另外一个类中 ...
- java中方法的控制修饰符也分为:可访问控制符和非访问控制符两类。
3 .方法的控制修饰符也分为:可访问控制符和非访问控制符两类. 可访问控制符有 4 种:公共访问控制符: public :私有访问控制符: private :保护访问控制符: protected :私 ...
随机推荐
- jFinal 2.2入门学习之一:搭建框架输出helloword
官方推荐用Eclipse IDE for Java EE Developers 做为开发环境 1.创建 Dynamic Web Project 2.修改 Default Output Folder,推 ...
- MySQL->AUTO_INCREMENT[20180516]
MySQL表格中自增长主键AUTO_INCREMENT使用,实现序列的最简单的方式 创建一个AUTO_INCREMENT自增的表 mysql> create table seq_test( ...
- python新建一个表格xls并写入数据
# -*- coding:utf-8 -*- import xlwt workbook = xlwt.Workbook() # 新建一个工作簿 sheet = workbook.add_sheet(& ...
- VirtualBox + CentOS详细安装教程
一.前期工作准备 电脑虚拟化开启(必要工作)大致流程: a.电脑开机时长按F12(F10)进入BIOS界面; b.依次选择Configuratio > Intel Virtual Technol ...
- c3p0封装
配置文件 <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <defaul ...
- 初次使用vue-cli3 来搭建项目
1,细数项目中使用的技术:vue, vue-router, vuex ,axios,vue-cli3, 快速建站. 2,mock技术使用的express-mockjs . 由于cli3 最新版的话缺少 ...
- PHP 查找二维数组中是否有指定字符串的字段
Array ( ] => Array ( [content] => 您提交了订单,请等待系统确认 :: [operator] => 客户 ) ] => Array ( [con ...
- phporjquery生成二维码
一.php生成二维码 下载文章末尾链接中phpcode文件 include "./phpqrcode/qrlib.php"; //QRcode::png('http://www.b ...
- 记一次学习PHP中的错误
今天学习PHP时,回想起一段代码 <?php> $i = true; $o = true; $p = false; if($i or $o and $p){ echo '输出为'.'tru ...
- TCP/IP协议中的UDP与TCP的区别
TCP面向连接,UDP面向非连接即发送数据前不需要建立链接TCP提供可靠的服务(数据传输),UDP无法保证,它没有TCP的接受确认.窗口等机制,因此也不需要交换控制信息:发生丢包也一概不负责.TCP面 ...