1、namespace被用于组织代码,它是classes、interfaces、structs、enums、delegates的集合,同时它也可以包含其他的namespace。
2、namespace的声明若放在.cs文件的起始处,在程序中就可以直接使用该namespace中包含的classs或interface等,否则必须在程序中给用到的非自定义的classes或interfaces等添加namespace前缀。
3、c#是大小写敏感的编程语言。
4、写console有两种方式:
- Concatenation字符串拼接
- Place holder syntax---占位符语法(更加受欢迎)
5、在c#中,boolean类型仅能存储true和false,不能像在c或c++中那样存储0或其他数字值。
6、在c#中,types可以被划分为两大子类别,即value types和reference types,前者包括int、float、double、struct、enum等,后者包括class、interface、delegate、array等。
7、默认情况下,value types是non nullable,为使它们变为nullable,在类型声明和变量名之间添加?即可。nullable types(可置空类型)填补了c# types系统和数据库types系统之间的差异。想象一下下面的情形,下图是数据库某张表的一部分,其中Are You Student字段仅能选择是或者否,对应到c#中就是true或false,但该字段是optional可选的。若用户没有选填,那么在数据库中就表现为空(未填状态),此时,这种状态就无法对应到c#中的boolean type,因为boolean type仅能取true或false。这时就需要将boolean type转换为nullable type。
8、nullable type的一个常用操作符??,该操作符常用于给与nullable type对应的value type分配一个默认值,该值将在当前值为空的nullable type被赋值给对应的value type时应用。
9、Implicit conversion隐式类型转换由编译器自动完成,前提条件是转换过程中没有信息丢失而且不抛出异常时。比如,由int类型转换到float类型,可以成功转换,反之则不然。若操作者允许适当的信息丢失,则可以使用Explicit conversion显式类型转换,实现Explicit conversion有两种方式,一是使用强转操作符,二是使用c#中提供的convert类。这两种方式的区别在于:前者不会抛出转换异常,而后者则会。对于string形式的数字而言,除了可以使用convert类强转外,还可以使用Parse和TryParse方法强转,这两个方法的区别在于:当字符串中包含非数字时,前者会抛出异常,而后者则仅仅返回false,表示转换未成功。
10、for循环和while循环仅在形式上不同,在实现原理上是相同的,两者均需要先初始化一个counter变量,然后设定循环检测条件,最后递增counter变量。foreach循环相比for循环而言,优点在于不会出现索引访问越界异常,不必在代码中明确指定循环的次数,最重要的是foreach循环可以循环collection class。
11、.NET Framework class libraries 在默认情况下被C#编译器自动引用。注意:C#语言自身没有一个独立的C#运行时库(就像C运行时库那样),相反, .NET Framework是C#的运行时库。