C# ---- 重温的一些点滴

08-08-27
   关键字params。通过它往方法传递参数可以个数不定,且事先不需要用数组打包。但限制和不便也极多,最关键的
是添加params的参数要是最后一个。我的感觉是记得有这么个东西,实在该用的时候就去用。当然对这个params运用的神来之笔应该是Console.Write()一族的方法啦。
   非抽象类不可以声明抽象方法。接口中的成员都是默认public和abstract的,但是在书写方法签名时不可以显示写出,会报错
。(这两点主要分别针对c++和java中不一样的地方,c++中只要有抽象方法就是抽象类,而java中虽然默认是public和abstract但是你写上也无妨)

 

08-08-29
    值类型可以和null进行==比较,不过全部是false。
    c#本身不具有单独的运行时类库,所以我曾说过,c#不能独存,.NET框架才是c#的运行时类库。
    c#命令行中,编译一个类库的命令是csc /t:library 文件名(/t是目标类型:exe,winexe,library,moudle)
    编译一个using类库的exe命令,csc /r: **.dll 文件(/r是引用一个程序集)
    程序集就是一个exe或者dll,包含中间语言(Intermediate Language)和元数据(metadata)。在执行程序集之前,CLR的JIT会将程序集中的IL代码转换成本地代码。
    值类型的变量直接包含它们的数据,而引用类型的变量存储着对其数据的引用。

我们手里控制的类型你了解多少呢?
    值类型和引用类型:值类型又分简单类型,枚举类型和结构类型;引用类型又分类类型,接口类型数组类型和委托类型。

    结构不支持用户指定的继承。
    委托类型表示通过参数列表和返回类型对方法的引用。委托将方法处理为实体,从而可以将其赋值给参数,并且作为参
数传递。委托是面向对象和类型安全的。
装箱与拆箱:
   c#中所有类型的基类都是object,为了操作值类型像引用类型一样,把值类型和object之间进行转换就是装箱与拆箱了。而拆箱有一个要求就是必须那个object是装箱而来,否则运行时出错。

C# code runs in a safe,managed environment. Every memory loaction is checked, including array indexes.
The runtime generates a test of the actual array bounds before accessing each particular array element.

About foreach

  The foreach generates the best iteration code for any collection you hava.
  foreach now generates different IL for arrays than other collections. The array version does not use the
IEnumerator interface,which would require boxing and unboxing.

About enum
   When you create your own values for an enum, make sure that 0 is one of them.
   The system initializes all instances of value types to 0. There is no way to prevent users from creating
instances of value types that are all 0s.If possible, make the all 0 case the natural default. As a special case, enums used as flags ensure that 0 is the absence of all flags.

08-09-01
   checked 和unchecked 语句用于控制整型算术运算和转换的溢出检查上下文。
   lock语句用于获取给定对象的互斥锁,执行一条语句,然后释放该锁。
   using 语句用于获取一个资源,执行一条语句,然后释放该资源。
   数组有一个长度的属性,Length。
   类是一种将状态和行为结合在一个单元中的数据结构。
   类的成员不是静态成员就是实例成员。静态成员属于类,实例成员属于对象。
   对readonly域的赋值只能作为域声明的一部分出现,或者在同一个类中的实例构造函数或静态构造函数中进行。
   实例构造函数是实现对类实例进行初始化所需操作的成员;静态构造函数则是在首次加载类时实现对类本身进行初始化
所需操作的成员。
   对于小的数据结构,使用结构而不是类可以在应用程序运行时节省大量的内存分配。
   结构的构造函数通过new运算符来调用,但这并不意味着将分配内存。结构的构造函数不是动态地分配对象并返回其值
的引用,而是简单地返回结构值本身(一般位于堆栈的临时位置),然后在需要时对这个值进行复制。
08-09-02
   当应用程序运行时,将创建一个新的应用程序域(application domain)应用程序域通过作为应用程序状态的容器,使得应用程序可以相互隔离。应用程序域充当了应用程序及其使用的类库中
所定义的类型的容器和边界。

 

                                                                                                                 ----by 千冰念 @ YITIAN Studio

posted on 2008-09-02 12:03  荒芜森林  阅读(373)  评论(1编辑  收藏  举报

导航