注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

奕克

爱家人爱工作爱生活

 
 
 

日志

 
 

C#捷径教程(书摘)  

2010-03-05 14:27:09|  分类: 转载 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  这几天看了一下,发现这书也得也不怎么样,也不知道是不是翻译烂的原因。而且过于注重语法细节,举的例子让我感觉语法规则比C++还细,显然是注重C#的本质,一堆继承和传参的概念和细微区别显然不适合我这样急于开发的人阅读。类设计中为了避免继承缺陷而注意的原则显然不需要我这种作坊式开发人员关注。不过对于有面向对象基本概念的人,关注一下本书中的某些新特性还有必要的,比如委托、包含、泛型、lambda表达式和linq语言集成查询。其它的完成可以在开发中学习。。。本书书摘也不继续了,纸质书籍打字太累了。。。
1.设计应用程序时、将不常用的功能放到独立的程序集中是相当有用的,CLR只在需要实加载它们,可以减少程序启动时间和内存需求。
 
2.程序集如果不是强命名的,应用程序必须在本目录或子目录中引用它们,这种程序集通常称为私有程序集。
 
3.所有程序集都有版本号,这避免了DLL陷阱-将共享DLL替换为新版本,导致使用旧版本的应用程序崩溃。
 
4.C#中的每个对象和值隐含的继承自system.object类。

 
5.CLR托管世界中,有两种类型:值类型用struct定义,引用类型用class定义:
public struct c
{public int x;
 Public int y;}
Public class ep
{ public static void modify(ref c c1)
  {..}
  Static void main(){
   }
}
 
 
6.public enum co:long
{red,
Green=50,
Blue}
 
7.var ml=new List<int>();
Foreach(var I in ml) ….
隐含类型声明必须包括初始化,而且不能一行声明多个变量。
 
8.类型转换
父类=子类 可以隐式转换
子类=(子类) 父类  显示转换,有可能出invalidcastException异常。
 
9.as操作符测试类型,如果不能转换返回null引用
BT b=d as BT;
If (b!-null) {console.writeline(“is”);}
 
10。命名空间可以嵌套
 Namespace acme{
      Namespace ut
             { class st{ }  
}
}
等价于
Namespace acme
{}
Namespace acme.ut
{class st{} }
 
11.finalizer方法在对象垃圾回收时执行,如果可能,尽量避免使用它。
 
12.public class d: b, icloneable
{….
}其中icloneable为接口
 
13.static修饰符由域中类的所有实例共享。静态变量从类外面访问时使用类名而不是对象名
 
14.initializer
 
15.静态方法中只能使用静态成员。
 
16.属性是用来定义字段访问方法的一种简化。
Public class a
{ private int t
 Public int T
{ get
  {return t;}
 Set
{t=value;}
}
}
 
16.公共属性的定义比公共字段好,因为以后字段的更改不会影响属性的调接口。
 
17.自动实现属性
Publc class a
{publlic string f{get; set;}
}
 
18.类成员的默认级别是private,不论类在命名空间内部还是外部,只能是public或者internal,默认是internal。对于任何实体,默认的访问修饰符都是使用于它们且最严格的。
 
19.public interface IM
{…}
Public class T: IM
{…}
Public class EP
{
Static void main()
   {t1=new T();
IM i=t1; 
i.P();  //调用接口的实现方法P  }
}
 
 
20.一个类只能有一个基类。派生类继承了除实例构造和析构函数、静态构造函数之外的基类每一个成员。
 
21.
Public B
{ public virtual D()
  {…}
}
Public T: B
{ public override void D()
  {…}
}
Public class EP
{static void main()
  { T t=new T()
B b=t;
b.D();}
}
多态,基类定义虚方法,子类重写虚方法。
 
21.base关键字:
Public class B:A
{ pulbic B(): base(123)  // 调用基类构造函数
  ….
  Public c()
   { base.t();  //调用基类方法
}
 
 
22.嵌套类是在另一个类中定义的类,嵌套类适合作为一个辅助类来对包含类进行操作。
比如迭代器,因为嵌套类可以访问包含类的所有可见成员,即使对方是私有的。
 
23.索引器:索引器允许像数组那样对待对象实例。

Public class drawing
{
  Private arraylist shapes;
 ….. 
Public shape this[int index]
{ get {return (shape) shapes[index]; }}
….
}
 
Public class EP
{ static void main()
 { for (int i….)
         Shape s1=drawing;
         S1….;
 }

 
 
24.分部类:c#2.0新特性,可以在多个文件中定义一个类,但是必须在同一命名空间下。通过在 class 前加上partial 关键字。分部类可以把代码工具生成的代码和自己写的代码分开,这样不会混淆,用工具类重新生成代码的时候,所作的自己的修改就不会丢失。
 
25.静态类,c#2.0新特性,允许一个类的成员都是静态的,不能创建实例。静态类的成员不可以是protected的,因为他不可以作为基类。
 
26.值类型使用struct关键字定义。值类型的传参是传值,值类型的赋值是实例完全复制,而引用类型的赋值是增加了同一个对象的引用。除了字符串,数组和委托之外的所有C#内嵌类型都是值类型。值类型不能作为基类也不能继承它。
 
27.结构有个默认的无参构造函数,
如果用 square sq;这样的声明,可以避免调用默认构造函数,但在你没有完全自己写代码初始化成员之前是不能调用结构的方法的,编译器会给出错误。除非使用
Square sq=new square()
这样会调用默认构造函数。
  评论这张
 
阅读(109)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017