从今天开始,学习《C# 本质论7.0》这本书,究其本质!当然已经了解过面向对象思想和有一定Java和C#编程基础,所以无需全盘细节整理,在学习记录的过程中对于简单的前几章学习内容准备采用QA和记录重点提炼的方式记录,也就是对于重点难点以及自己之前不理解的地方采用论述或者问答的形式记录。
C#冷知识
1,C#是区分大小写的语言,大小写不正确会使代码无法成功编译。
2,C#的Main方法除了能返回void还能返回int,int是状态码,返回0意味着错误。
3,换行与否不影响语句的分隔,C#的语句分隔只认分号,只要有分号执行结果就换行显示,没有就一直在一行显示。
4,C#允许在同一语句中进行多个赋值操作,并且声明的时候同类型也可多个逗号隔开,例如:
private static void Main() { string tml2, tml3; var tml1 = tml2 = tml3 = "多个tml都能接受值"; System.Console.WriteLine(tml2); System.Console.WriteLine(tml1); System.Console.WriteLine(tml3); }
5,字符串的不可变性,要知道字符串是不允许改变的,不能修改最初引用的数据,只能重新赋值,让它指向内存中的新位置。
6,Java要求文件名和类名必须一致,在C#中一个文件可以包含多个类,并且类的代码可通过分部类拆分到多个文件中
7,什么是SDK?其实和Java里的JDK类似,包括:编译器、运行时执行引擎(CLR)、“运行时”能访问的语言可访问功能框架以及可能和SDK捆绑的其它工具,说白了就是一套开发环境。
C#新知识
1,字符串插值功能,妈妈再也不担心使用复合格式化发生错误了
private static void Main() { const string tml2 = "多个tml都能接受值"; const string tml3 = "我都能接受"; System.Console.WriteLine($"字符串插值{tml2}{tml3}"); //字符串插值多个tml都能接受值我都能接受 }
而以前的复合格式化是通过索引的方式,按照顺序输出变量,不直观。
2,在字符串之前使用@符合来指明转义序列不被处理,并且逐字解释所有空白字符,通俗的说,以前想输出换行,需要在需要换行的地方加\n,现在只需要原样换行就行了。并且@和$可以组合使用,也可以达到换行的效果:
private static void Main() { const string tml2 = "多个tml都能接受值"; const string tml3 = "我都能接受"; System.Console.WriteLine($@"字符串插值 {tml2}{tml3}"); //字符串插值 //多个tml都能接受值我都能接受 }
标识符相关规范
1,标识符的命名规范(个人)
结合标准的规范以及自己的习惯,总结出这样的标识符使用规范:结合下C#命名规范:
- 标识符可以包含大小写字母、数字、下划线和@字符。
- 标识符不能以数字开头,也不能包含空格。
- 标识符必须区分大小写。大写字母和小写字母被认为是不同的字母。
- @字符只能是标识符的第一个字符。带@前缀的标识符称为逐字标识符。
- 不能使用C#中的关键字。但是,@字符加关键字可以成为合法的标识符,建议不要这样做。
- 不能与C#的类库名称相同。
不要使用单词缩写,要重视其清晰而非简短性;尽量不要使用下划线,所以最好仅使用数字和字母的非缩写形式。
2,标识符的书写规范(个人)
首先明确两种命名规范:
- Camel(驼峰)命名法:首个单词首字母小写,后续单词首字母大写:适用于变量命名(参数名、成员变量、局部变量),例如:tmlGetGirl
- Pascal(帕斯卡)命名法:每个单词首字母均大写:适用于方法和类,例如:TmlAiTest
推荐使用名称或名词短语来命名类,推荐使用第一个单词为动词的短语来命名方法