1. 构建程序的应用程序对象,可执行程序入口点main()方法的构成。C#的基本数据类型及其在System命名空间中的等价类型,包括System.String 和System.Text.StringBuilder类类型。了解了.net数据类型的细节后,研究一些数据类型转换的技术,包括窄化运算,宽化运算以及checked和unchecked关键字的使用。
2. C#关键字var的作用:允许你隐式地定义本地变量。在使用LINQ技术时很有帮助。构建有效C#代码语句的核心操作符,迭代结构和选择结构。
注:在C#中创建全局函数或全局数据是不可能的。
3.定义staticMain()方法的类叫做应用程序对象。一个可执行程序可以有多个应用程序对象(在执行单元测试的时候可能有用),但是我们必须通过项目属性编辑器中的Application选项卡内的Startup Object列表来设定将那个Main()方法作为入口点。
4. static:静态成员是类级别的(而不是对象级别的)。在调用之前不需要先创建新的类实例。
5. 命名规则:C#所有关键字都是小写的,同时命名空间,类型和成员名称以一个大写字母开头,总监的单词都是首字母大写。
6. 格式化数值数据:string.Format(”{0:d9}”,999).构建的自定义类(或结构),可以通过ICustomFormatter接口来定义自定义的格式化构架。
7. C#数据类型关键字其实是System命名空间中完整类型的简化符号。C#内建系统类型和NET内建系统类型的区别。
8. 所有内建数据类型都支持默认构造函数,用new分配时,都有默认值而不是C++中那不可预料的值了。所有这些类型都派生自System.Object,它定义了一组方法。
9. string 和char都是Unicode,利用char.IsDigit(myChar)来判断是否是数字。
10. 从字符串数据中解析数值:用 内建类型.Parse(“w”);
11.System.DateTime(年,月,日 ) 和 System.TimeSpan(时,分,秒)。以及它们的一些方法。
12.System.Numerics的BigInterger表示大数值,Complex可以对虚数或双曲正切数建模,引用该名空间时,首先要添加System.Numerics.dll程序集,方法是Project->Add Reference->.net选项卡,选择System.Numerics程序集。同时using System.Numerics。
13. 转义字符:\’等,\a是触发系统警报。
Console.WriteLine(“C:\\MyApp\\bin\\Debug\a”)
Console.WriteLine(@“C:\MyApp\bin\Debug\a”):@”逐字字符串”可以让转义字符失效,对输出目录和网络路径的字符串时最有用
观察:@“Cerebus said :“Darrr!Pret-tysun-sets””
14. System.string 一旦赋值,字符数据就不能改变,包括“=”操作,每次操作 会返回一个新的string(旧的string等待垃圾回收),所以对于文本处理程序,滥用string会导致代码膨胀。
string s2 = s1.ToUpper();只是返回了一个新的字符串。
15.System.Text.StringBuilder 调用这个,同string类是,但调用它的成员时都是直接在字符串上进行修改。默认保存16个字符一下的字符串,超出部分自动拓展(复制到新的实例中)。
16. 窄化和宽化:宽化是自动的,窄化(int to short)不行。强制类型转换
注:其实就是自动类型转换(文档查询Type Conversion Tables(类型转换表)主题)
捕捉窄化转换的错误:
Try{byte sum=checked( (byte) Add (b1,b2) );}catch{}:主要是用checked(强制转换)和unchecked()或者checked{语句块}
C#编译器提供了溢出检测:打开项目属性页->build->advanced->check…,调试完了关闭就可以了。
System.Convert.ToByte(myInt);//语言无关的方式进行数据类型转换(用它是个人喜好?)
17. 隐式类型本地变量:var关键字创建的变量,编译器根据数据点的初始值来自动推断实际的数据类型。Var可以声明变量,参数和字段。可以通过反射来输出类型名称…(什么玩意?)
注:var不能用于字段数据:private var myInt=10 ×
Var不能用于返回值或参数类型:public var MyMethod(var x){} ×
Var声明的本地变量必须在声明时分配初始值,且初值不能为null。Var myData ×
18. 隐式类型数据是强类型数据的理解:
Var关键字与脚本语言(如JavaScript,Perl)所用的技术和COM的Variant数据类型并不相同,对于后两者来说,一个变量在应用程序的生命周期中可以保存不同的类型(通常称为动态类型),C#的动态类型是dynamic关键字声明的。
19. var的用处:几乎只用于LINQ技术。
20. for 循环While循环Do/while循环
Foreach/in:遍历数组 string[] carTypes=…; foreach(string c in carTypes)…
学习foreach关键字首先要对基于接口的编程以及IEnumerater和IEnumerable接口有一定的了解。(9章中介绍)
21. C#的switch语句
Switch() 可以为数值或者字符串
{
Case ..:
Break or goto;
}