随笔分类 -  C#

摘要:集合类(Collection Classes)一般用于处理对象列表,其功能比简单数组要多,功能大多是通过实现System.Collections名称空间中的几口而获得的,因此集合的语法已经标准化了。ArrayList集合可以用AddRange()方法一次添加好几个项。这个方法接受带有ICollection接口的任何对象,包括数组(Array)。(InsertRange()添加到指定位置、IndexOf()获得索引)简单数组(Array)是强类型化的,可以直接访问它们所包含的项类型,所以可以直接调用项的方法;ArrayList集合是System.Object对象的集合,所以必须对所有的项进行数据 阅读全文
posted @ 2012-08-01 09:41 David Huang 阅读(225) 评论(0) 推荐(0)
摘要:规范:.net framework 中的公共字段、公共属性以PascalCasing形式来命名。字段可以使用关键字readonly,表示这个字段自能在执行构造函数的过程中赋值,或由初始化赋值语句赋值。virtual & abstract & override:http://www.cnblogs.com/David-Huang/archive/2012/07/24/2606697.htm自动属性:public int MyInt { get; set; }隐藏基类方法(接口中用法相同): 1 public class MyBaseClass 2 { 3 p... 阅读全文
posted @ 2012-07-24 16:42 David Huang 阅读(209) 评论(0) 推荐(0)
摘要:virtual:方法可以重写。 abstract:方法必须在非抽象的派生类中重写(只用于抽象类中)。virtual 示例:public class MyBaseClass { public virtual void MyFun() { //do sth. } } public class MyClass : MyBaseClass { public override void MyFun() { //do sth new. } }... 阅读全文
posted @ 2012-07-24 16:19 David Huang 阅读(431) 评论(0) 推荐(0)
摘要:有如下结构:public class MyBaseClass { public MyBaseClass() { } public MyBaseClass(int i) { } } public class MyDerivedClass : MyBaseClass { public MyDerivedClass() : this(5, 6) { } public MyDerivedClass(int i) ... 阅读全文
posted @ 2012-07-24 13:41 David Huang 阅读(377) 评论(0) 推荐(0)
摘要:internal:内部的,只有当前项目中的代码才能访问它。public:可以由其他项目中的代码访问。abstract: 抽象的(不能实例化,只能继承,可以有抽象成员)。sealed:密封的,不能继承。指定继承:在类名的后面加上一个冒号,其后是基类名。 public class MyClass :MyBase { // Class members. }不允许派生类的可访问性高于基类。也就是说,内部类可以继承于一个公共基类,但公共类不能继承于一个内部类。所有接口成员都必须在支持该接口的类中实现。但如果不想使用给定的接口成员,就可以提供一个“空”的实现方法(没有函数代... 阅读全文
posted @ 2012-07-24 11:11 David Huang 阅读(174) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/huashanlin/archive/2006/12/13/591129.html Net提供了接口,这个不同于Class或者Struct的类型定义。接口有些情况,看似和抽象类一样,因此有些人认为在.Net可以完全用接口来替换抽象类。其实不然,接口和抽象类各有长处和缺陷,因此往往在应用当中,两者要结合来使用,从而互补长短。 接下来先说说抽象类和接口的区别。 区别一,两者表达的概念不一样。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“是”的关系;而接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,... 阅读全文
posted @ 2012-07-23 15:44 David Huang 阅读(198) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/michaelxu/archive/2007/03/29/692021.html 什么是接口?其实,接口简单理解就是一种约定,使得实现接口的类或结构在形式上保持一致。个人觉得,使用接口可以使程序更加清晰和条理化,这就是接口的好处,但并不是所有的编程语言都支持接口,C#是支持接口的。注意,虽然在概念上,C#接口类似于COM接口,但他们的底层结构是不同的。那么,我们来看一下如何声明和使用接口。 声明接口 声明接口在语法上和声明抽象类完全相同,例如这里有一个银行账户的接口: publicinterfaceIBankAccount{voidPa... 阅读全文
posted @ 2012-07-23 14:24 David Huang 阅读(252) 评论(0) 推荐(0)
摘要:对象:对象就是OOP应用程序的一个组成部分。这个组成部分封装了部分应用程序,这部分应用程序可以是一个过程、一些数据或一些更抽象的实体。类:对象的类型在OOP中有一个特殊的名称:类。可以使用类的定义实例化对象,这标识创建该类的一个实例。“类的实例”和对象含义相同,注意“类”和“对象”是完全不同的概念。属性和字段:http://www.cnblogs.com/David-Huang/archive/2012/07/23/2604473.html一切皆对象:实际上,C#和.Net Framework中的所有东西都是对象。控制台应用程序中的Main()函数就是类的一个方法。每个变量类型都是一个类。每个 阅读全文
posted @ 2012-07-23 10:30 David Huang 阅读(275) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/kingdi/archive/2006/09/04/494637.html以下的文章是摘录的,作者已经不详了。之所以摘录,是因为这个概念很重要特别对于VFP程序员来说,这里构造属性就与vfp的方法完全不同。c#的属性融合了vfp的addproperty() 和属性的access method和assign method 。不一而足使用属性,避免将数据成员直接暴露给外界 学习研究.NET的早期,经常碰到一些学习C#/.NET的朋友问,要属性这种华而不实的东西做什么?后来做项目时也时常接到team里的人的抱怨反馈,为什么不直接放一个public字段.. 阅读全文
posted @ 2012-07-23 09:31 David Huang 阅读(3231) 评论(1) 推荐(0)
摘要:.pdb 文件 调试用的一些东西(详见:http://www.cnblogs.com/itech/archive/2011/08/15/2136522.html)完成了应用程序的开发时,一般应给用户提供发布版本(release),因为发布版本不需要调试版本(debug)所包含的符号信息。这章有点废 阅读全文
posted @ 2012-07-20 16:33 David Huang 阅读(173) 评论(0) 推荐(0)
摘要:参数数组必须是函数定义中的最后一个参数(p116):static <returnType> <functionName> (<p1Type> <p1Name>, ... , params <type>[] <name>)突然发现ref的好处了,能一次改变“多个”参数的值。(以前都是按一个想的,觉得没什么用)ref 和 out 区别(p119): ● 把未赋值的变量用作ref参数是非法的,但可以把未赋值的变量用做out参数。 ● 另外,在函数使用out参数时,out参数必须看作是还未赋值。 即调用代码可以把已赋值的变量用做o 阅读全文
posted @ 2012-07-20 14:57 David Huang 阅读(147) 评论(0) 推荐(0)
摘要:char存储的是数值,所以char被当作一个数值类型。checked关键字:checked(expression),变量进行类型转换时,检查是否溢出。用Convert则自动进行溢出检测,以后全用Convert了。Enum.Parse(): (enumerationType)Enum.Parse(typeof(enumerationType),enumerationValueString); string myString = "north"; orientation myDirection=(orientation)Enum.Parse(typeof(orientation 阅读全文
posted @ 2012-07-20 10:30 David Huang 阅读(123) 评论(0) 推荐(0)
摘要:运算符 ^(异或,有且只有一个是true) :var1=var2^var3。&&与&的区别:http://www.cnblogs.com/David-Huang/archive/2012/07/19/2599445.html>> << 运算符:var1>>=var2。把var1的二进制值向右移动var2位,就得到var1的值。 习题:http://files.cnblogs.com/David-Huang/C04.rar 阅读全文
posted @ 2012-07-19 15:38 David Huang 阅读(164) 评论(0) 推荐(0)
摘要:1.(p40)char变量存储的实际上是数字,所以把两个char变量加在一起也会得到一个数字(其类型为int)。这是一个隐式转换。2.(p46)有时,不同名称空间中的相同名称会长生冲突,使系统崩溃(此时,代码无法编译,编译器会告诉我们名称有冲突)。此时,可以使用using 语句为名称空间提供一个别名。 Example 1 namespace LevelOne 2 { 3 using LT=LevelTwo; 4 5 //name "NameThree" defined 6 7 namespace LevelTwo 8 { 9 ... 阅读全文
posted @ 2012-07-19 13:42 David Huang 阅读(164) 评论(0) 推荐(0)
摘要:一个软件工程毕业的人,竟然没学过计算机英语。一些名词都看不懂,还学个P啊,自己慢慢补上吧,附上一些概念的解释,加深印象(有点乱,待整理)。1.CTS:Common Type System 通用类型系统类型是数据的一种表达方式,指定其中最基础的部分(如32位带符号的整数),以便使用.NET Framework 在各种语言之间进行交互操作。这称为通用类型系统CTS 。2.CLR:Common Language Runtime 公共语言运行库负责用.NET库开发的所有应用程序的执行。3.CIL:Common IntermediateLanguage 通用中间语言 在编译使用.NET Framew.. 阅读全文
posted @ 2012-07-18 10:58 David Huang 阅读(153) 评论(0) 推荐(0)