摘要: OOP第二个支柱:继承继承是OOP的一个方面,可以促使代码重用。代码重用归为两类:经典继承(is-a关系)和包含/委托模型(has-a关系)。当在类之间创建is-a关系时,也就是在两个或两个以上类类型之间创建依赖关系。经典继承是新的类(继承类)扩展既有类(基类/父类)的功能。基类的作用是为扩展类定义所以公共的数据与成员。说起基类要清楚一点,.NET要求一个类只能有一个直接基类。我们不能创建派生自两个及两个以上基类的类类型。但.NET允许一个类型实现许多独立的接口,这样,可以实现很多行为,同事又避免了多重继承引起的复杂性。//错误!.NET不允许继承多个类class MyClass:BaseCl 阅读全文
posted @ 2011-07-08 12:55 黄宝强 阅读(1923) 评论(2) 推荐(2) 编辑
摘要: 常量数据C#提供了const关键字来定义常量,如果我们要为应用程序定义逻辑上和某个类或结构相关的一组已知值的话,就非常有用。假如我们创建一个MyMathClass的工具类,且需要定义一个PI值(假如是3.14),如果不希望别的开发者改变PI值,可以使用如下常量定义PI值:class MyMathClass{ //定义为常量数据 public const double PI=3.14;}class Program{ public static void Main(string[] args) { //注意:因为常量数据是隐式静态的,所以直接在类级别上调用(MyMathClass.PI)。 Con 阅读全文
posted @ 2011-07-08 12:55 黄宝强 阅读(2684) 评论(9) 推荐(2) 编辑
摘要: 首先介绍网络上常用的两种解决方法:1.我的电脑--控制面板--管理工具--服务--右键 MSSQLSERVER--属性--登陆--登陆身份--选择"本地系统帐户"或:2.我的电脑--控制面板--管理工具--服务--右键 MSSQLSERVER--属性--登陆--登陆身份--选择"此帐户"--密码和确认密码中输入你修改后的administrator密码.两者的区别:选择第一种方式,以后修改了administrator密码,不用再调整(但要求登陆操作系统的是系统管理员)选择第二种方式,以后修改了administrator密码,还要再重复做上面的操作.需要定期 阅读全文
posted @ 2011-05-09 15:18 黄宝强 阅读(664) 评论(0) 推荐(0) 编辑
摘要: 从上一家公司辞职到今天刚好半个月了,这十五天是我人生至今最为纠结的日子。这段日子我劳于找工作选工作,跑深圳、闯广州的。终于赶在五一假前,给了自己一个最终的答复。以下是我奔波的成果:一、佛山JF:.NET软件工程师,工资不高(四千多吧),其他待遇没问不清楚。这是我提离职单后拿到的第一个OFFER,可能是我当时不了解行情吧,也可能是当时自认为自己是个人才,或许是受到前公司前辈的影响(他们跳槽后的待遇都不错)。呵呵~听到人事说工资暂时只能给这个数了,我想都没想就拒了。后来想想,前景应该还可以的,是做税务一体机的,待遇也是2年工作经验的正常薪资水平了。而且在佛山呢!当然,拒了就不用想了。二、佛山YY: 阅读全文
posted @ 2011-05-03 20:02 黄宝强 阅读(272) 评论(0) 推荐(0) 编辑
摘要: OOP的支柱:封装:隐藏一个对象的内部实现和保护数据完整性。继承:促进代码重用。多态:用同样的方式处理相关的对象。封装的作用OOP的第一个支柱是封装,是将对象用户不必了解的实现细节隐藏起来。如:你正在使用DatabaseReader类,它有Open()与Close()两个方法。//DatabaseReader封裝了操作数据库的细节DatabaseReader dr=new DatabaseReader();dr.Open(@"MyCar.mdf");//使用数据库来做一些事情,然后关闭dr.Close();调用者没有必要担心幕后完成DatabaseReader类的工作的众多 阅读全文
posted @ 2011-03-31 15:37 黄宝强 阅读(2120) 评论(2) 推荐(0) 编辑
摘要: 类类型是由字段数据(成员变量)和操作字段数据的成员(属性、方法、构造函数、事件等)所构成的自定义类型。其中字段数据表示类实例(对象)的状态。在C#中,类使用class关键字定义,例如:public class Car{ //Car的字段(状态) private int _speed; private string _name; //Car操作字段的属性 public int Speed { set {this._speed=value;} get{return this._speed;} } public string Name { set { this._name=value;} get{r 阅读全文
posted @ 2011-03-29 17:01 黄宝强 阅读(9331) 评论(7) 推荐(1) 编辑
摘要: 为什么需要可空类型? 例如,数据库中的某个字段可能包含值 true 或 false,但是它也可能根本不包含值。 System.Boolean b=GetDBColumnValue();//如果方法返回一个null值,会收到编译错误。 同样,可以将引用类型设置为 null,以指示它们未初始化。这种不一致会导致额外的编程工作,如使用附加变量来存储状态信息、使用特殊值,等等。可空类型修饰符使 C# 能够创建表示未定义值的值类型变量。可空类型可以表示基础类型的所有值,另外还可以表示 null 值。可空类型可通过下面两种方式中的一种声明:System.Nullable<T> variable 阅读全文
posted @ 2011-03-01 15:32 黄宝强 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 值类型与引用类型值类型:派生自System.ValueType类的类型是值类型,派生自ValueType的类型都会自动在栈(stack)上进行分配,因此有一个可预测的生命周期,而且非常高效。引用类型:在继承链上没有System.ValueType的类型(如System.Type、System.String、System.Array、System.Exception以及System.Delegate)不会在栈上分配,而是在垃圾回收堆(heap)上进行分配。另:C#中的所有基类型都是结构类型(例如:int对应System.Int32结构),结构类型是值类型;类类型是引用类型;栈的执行效率要比堆的执 阅读全文
posted @ 2011-03-01 14:31 黄宝强 阅读(2064) 评论(7) 推荐(2) 编辑
摘要: 枚举类型枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。 例如,假设您必须定义一个变量,该变量的值表示一周中的一天。 该变量只能存储七个有意义的值。 若要定义这些值,可以使用枚举类型。枚举类型是使用 enum 关键字声明的。enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };如果未在枚举数列表中指定元素的值,则值将自动按 1 递增。 在前面的示例中,Days.Sunday 的值为 0,Days.Monday 的值为 1,依此类推。创建新的 Days 对象时,如果 阅读全文
posted @ 2011-03-01 09:34 黄宝强 阅读(2076) 评论(1) 推荐(3) 编辑
摘要: 数组 数组是一组通过数字索引访问的的数据项。准确来说,数据是一组相同类型的数据点(如:int数组,string数组,Car数组)。int[] vInts=new int[3];//包含2个整型的数据,编号0~2string[] vStrings=new String[2];//包含2个字符串的数字,编号0、1数组声明中的数字就表示像的总数,而不是上界。数组的下界总是从0开始。可以使用索引来填充元素了。vInts[0]=1;vInts[1]=2;vInts[2]=3;vStrings[0]="bruce";vStrings[0]="rita";除了逐个元素 阅读全文
posted @ 2011-02-28 16:29 黄宝强 阅读(548) 评论(2) 推荐(0) 编辑