《programming C# 3.0》笔记(1)

1.         C#2.0添加了泛型GenericsC#3.0添加了语言集成查询linq。

 

2.         C#支持三种风格的注释:CC++XML。

 

3.         System.Console不是命名空间,而是类,不能using System.Console

 

4.         静态类型语言:在编译期间就知道对象的类型,例如C系列语言。

 

5.         动态类型语言:在运行期间才知道对象的类型,如javascript

 

6.         C#中,每种类型都有一定的不会改变的大小,如int型是4字节的。

 

7.         C#中,char型一定是Unicode字符,而不像C++中分为charwchar_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#要求所有条件表达式都必须是布尔值,即truefalse,而不是0,1或者其他整数值。

     如下语句是错误的:if(value=0)因为value=0是赋值表达式,返回0,不是truefalse

 

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.     thisC#中是引用,而不是指针。

 

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)来区别的,方法的签名由函数名和参数列表组成,和返回值的类型无关。创建两个签名相同但是返回类型不同的方法会产生编译错误。

posted @ 2011-08-10 01:13  iliveido  Views(174)  Comments(0)    收藏  举报