解读经典《C#高级编程》第七版 Page50-68.核心C#.Chapter2
2021-06-22 01:04
标签:XML read 命令行 规则 基本 字段 使用 专题 use 前言 本篇讲述Main方法,控制台,注释,预处理指令,编程规范等。这些概念比较琐碎,为避免长篇大论,主要以列举要点的方式来说明。 01 Main方法 # 如果用csc.exe命令行编译,要带上参数 /main 并指定入口方法。命令行编译还有很多功能,比如编译类库等,但平常我们并不会用到命令行,了解原理就行。 # 如果在Visual Studio中,则可在项目属性中可设置入口方法。 static void Main(string[] args) cmd中调用:test.exe a b c 02 控制台程序 如果要开发界面应用,一般会用WPF项目或者Winform项目,如果要写不需要界面的应用,一般会用Windows服务项目。所以控制台项目似乎没什么用,我主要用它写一些测试代码,用于研究语言和类库的一些不熟悉的功能。 为了实现一些基本的交互,会用到的方法: Console.WriteLine(); //输出 Console.ReadKey(); //暂停和接受用户输入 03 注释 单行注释:// 多行注释:/* */ XML注释(类注释,方法注释等):/// 之所以称之为XML注释,是因为在其编译的时候,其注释可以输出到标准化的XML格式文档中,然后可以通过工具软件生成类库帮助文档。接触过Java的同学应该知道Java有个JavaDoc工具可以生成项目的类库说明,非常实用。但.Net似乎没有提供原生工具,只是有些第三方工具提供这种功能,所以大家将XML注释输出生成为文档的行为并不是很流行。 04 预处理器指令 预处理器指令的概念来自于C和C++,对于C#来说,预处理器指令是由编译器处理的,影响的是编译过程。 这些命令组合在一起,实现条件编译(即某些代码可以不被编译)。 这些预处理器指令基本不会用到,一些高级的场合可能才会使用,比如你要开发一个通用类库,而这个类库要支持不同的.Net版本。 用于编译时输出警告,或者提示编译错误。 用于定义一个代码区域,使得整个代码区域可以折叠。这个功能我日常常用,可以说不可或缺。因为我习惯于强类型编程,在使用LINQ创建对象时,可能需要生成几十个字段的POCO类,我一般用工具软件生成创建对象的代码,其中就包含了#region,#endregion,这段工具生成的代码平时是折叠的,这样避免了编程中过多的滚动屏幕而浪费时间。
05 C#编程规则 # 尽管可以包含数字字符,但它们必须以字母或下划线开头。 # 不能把C#关键字用作标识符。 如果一定要用关键字做标识符名称,则可以加上@。虽然我从来不会这样用,但这提醒我们之前讲过的C#编译器是怎么理解@符号?@符号表示的是“将字符串理解为原本的含义”,同样的解释可以用在这里。比如: string string = "xxxx"; //错误 string @string = "xxxx"; //正确 # 不使用任何前缀 传统编程语言会习惯使用变量名前缀,用于表示变量类型,比如strValue表示string类型,intValue表示int类型。但C#中不建议如此做,这是因为C#作为面向对象编程的语言,以及强大的IDE,使用前缀带来的编程便利性优势已经基本消失。 # Pascal规范:单词首字母大写 名称空间、类、类成员(包括字段,属性)的名称都遵循此规范(除了部分遵循camel规范)。 # camel规范:名称中第一个单词首字母小写,其他单词大写 类的私有成员,方法的参数名遵循camel规范。 # 属性和方法 C#属性有getter,setter访问器,其实际上类似于方法。属性的使用便利性,容易让人忍不住将其应用范围不断扩大,但这并不总是合适的。那么问题就来了,什么时候适合将某成员设计为属性,而什么情况应该设计为方法?一般规则如下: ## 不要定义只写属性。如果你要定义一个只写属性,那它更合适使用方法实现,而不是用属性实现。 ## 读取属性不应该花费太长时间和太多资源。比如如果读取一个属性还需要先连接数据库,再从数据库提取数据,那它应该实现为get方法而不是属性。 ## 读取属性值不应该有负面效应。比如读取属性过程中后改变了一些数据,这是不应该的。 ## 读取属性值应该和读取顺序无关。比如一个属性如果读取之后,会意外的被除了setter之外的其他方法改变,那么它不应该设计为属性。 ## 设置属性值应该和设置顺序无关。设置属性值都不应该依赖任何其他前提,也不应该出现在某种情况下会抛出异常的可能。 # 字段 ## 字段应该总是私有的。 ## 常量和只读字段可以设为公有。 # 我的补充 有些人还是会将私有字段以_开头,比如 _userName。我不建议这么做。因为前面讲到了,不建议变量命名使用前缀,而 _ 也是一种特殊的前缀。且私有字段使用camel表示法,已经能和Pascal表示法的属性/方法分开了,没有必要再加一个 _ 来区分。 也有些人又说,我使用前缀是为了避免私有字段和初始化方法的参数间的命名冲突(因为按照规范,两者都是使用camel命名规范),这其实是好解决的,用this就可以了。比如:
下一篇将开始解读第三章“对象和类型”,这章主要阐述C#的对象化编程特性,这是很值得深入探讨的部分。 觉得文章有意义的话,请动动手指,分享给朋友一起来共同学习进步。 欢迎关注本人微信公众号,更及时的关注最新文章(每周三篇原创文章,以及多篇专题文章):
附文: c# 利用注释summary生成文档 C#预处理器指令 上一篇:解读经典《C#高级编程》第七版 Page45-50.核心C#.Chapter2 解读经典《C#高级编程》第七版 Page50-68.核心C#.Chapter2 标签:XML read 命令行 规则 基本 字段 使用 专题 use 原文地址:https://www.cnblogs.com/holyknight17/p/10221256.html
文章标题:解读经典《C#高级编程》第七版 Page50-68.核心C#.Chapter2
文章链接:http://soscw.com/index.php/essay/97146.html