《programming C# 3.0》笔记(1)
1. C#2.0添加了泛型Generics,C#3.0添加了语言集成查询linq。
2. C#支持三种风格的注释:C、C++、XML。
3. System.Console不是命名空间,而是类,不能using System.Console。
4. 静态类型语言:在编译期间就知道对象的类型,例如C系列语言。
5. 动态类型语言:在运行期间才知道对象的类型,如javascript。
6. C#中,每种类型都有一定的不会改变的大小,如int型是4字节的。
7. C#中,char型一定是Unicode字符,而不像C++中分为char和wchar_t。
8. 值类型变量的特点:分配在栈中;引用类型变量的特点:又称为对象,分配在堆中,被栈中的变量引用。
9. 常量分为:字面值,符号常量,枚举值。字面值如:32,“hello”;符号常量如const int bufsize=100;枚举值如enum ClothesSize{ Small=0,Middle=1,Large=2}。
其中ClothesSize是枚举类型,而ClothesSize.Small,ClothesSize.Middle,ClothesSize.Large是枚举值。
10. C#要求所有条件表达式都必须是布尔值,即true和false,而不是0,1或者其他整数值。
如下语句是错误的:if(value=0)因为value=0是赋值表达式,返回0,不是true或false。
11. 字段使用camel风格的命名方法,即首字母小写,如someOne。方法和属性使用pascal风格的命名方法,即首字母大写,如SomeOne,属性有点类似于方法。
12. C#类定义的最后没有分号。C#中没有头文件的概念。
13. C#类的成员变量可以通过初始化语句或者构造函数进行初始化。
例如:
Public class Time
{
Private int Date =30;//初始化语句
}
14. C#中没有拷贝构造方法,而且拷贝的语义是通过实现ICloneable接口来实现的,分为浅拷贝和深拷贝。
public Class SomeType:ICloneable
{
public Object clone()//实现Icloneable接口的clone方法
{
return memberwiseclone();
}
}
15. this在C#中是引用,而不是指针。
16. 在C#中通过实例访问静态方法或者静态成员变量是不合法的,而在Java中是合法的。
17. 如果一个构造方法是static,那么给他加访问修饰符,因为它一定是public的。程序员之所以给构造方法加上static,就是为了在类的实例创建之前运行该函数,因此一定要是public的。
18. 留住输出窗口的办法:System.Console.ReadKey();
19. static constructor的妙用:(1)初始化静态成员(2)执行那些只需要做一次的工作。
实例见:msdn static constructor 的bus类
20. static class的妙用:适合做数据转换器、计算器这种作用的类,它们的内部实现通常是某种算法,他们的职责是将输入转为输出,自己不需要存储数据。实例:Sytem.Math。
static class的特点:
(1)只有静态成员,连构造函数都是静态的。
(2)既然是static class,当然就不希望或者说不必要(你说你实例化System.Math干嘛)实例化。
(3)不能被继承,以免节外生枝,因为你永远不知道程序员在继承了static class会怎样糟蹋它,毁坏它static的特性.
21. 方法的重载:
方法是依靠签名(signature)来区别的,方法的签名由函数名和参数列表组成,和返回值的类型无关。创建两个签名相同但是返回类型不同的方法会产生编译错误。

浙公网安备 33010602011771号