博客园 - 黄宝强
uuid:6cbd1ba2-f883-4c34-aed1-30dde64a3a3e;id=691030
2012-09-04T09:25:02Z
黄宝强
https://www.cnblogs.com/bruce-wong/
feed.cnblogs.com
https://www.cnblogs.com/bruce-wong/archive/2011/07/08/2001835.html
C#面向对象编程的3个支柱(二) - 黄宝强
OOP第二个支柱:继承继承是OOP的一个方面,可以促使代码重用。代码重用归为两类:经典继承(is-a关系)和包含/委托模型(has-a关系)。当在类之间创建is-a关系时,也就是在两个或两个以上类类型之间创建依赖关系。经典继承是新的类(继承类)扩展既有类(基类/父类)的功能。基类的作用是为扩展类定义所以公共的数据与成员。说起基类要清楚一点,.NET要求一个类只能有一个直接基类。我们不能创建派生自两个及两个以上基类的类类型。但.NET允许一个类型实现许多独立的接口,这样,可以实现很多行为,同事又避免了多重继承引起的复杂性。//错误!.NET不允许继承多个类class MyClass:BaseCl
2011-07-08T04:55:00Z
2011-07-08T04:55:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】OOP第二个支柱:继承继承是OOP的一个方面,可以促使代码重用。代码重用归为两类:经典继承(is-a关系)和包含/委托模型(has-a关系)。当在类之间创建is-a关系时,也就是在两个或两个以上类类型之间创建依赖关系。经典继承是新的类(继承类)扩展既有类(基类/父类)的功能。基类的作用是为扩展类定义所以公共的数据与成员。说起基类要清楚一点,.NET要求一个类只能有一个直接基类。我们不能创建派生自两个及两个以上基类的类类型。但.NET允许一个类型实现许多独立的接口,这样,可以实现很多行为,同事又避免了多重继承引起的复杂性。//错误!.NET不允许继承多个类class MyClass:BaseCl <a href="https://www.cnblogs.com/bruce-wong/archive/2011/07/08/2001835.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/07/08/2001222.html
C#常量数据与只读字段 - 黄宝强
常量数据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
2011-07-08T04:55:00Z
2011-07-08T04:55:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】常量数据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 <a href="https://www.cnblogs.com/bruce-wong/archive/2011/07/08/2001222.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/05/09/2041197.html
SQL Server 2005 服务启动失败 1069错误(由于登录失败而无法启动服务)解决方法 - 黄宝强
首先介绍网络上常用的两种解决方法:1.我的电脑--控制面板--管理工具--服务--右键 MSSQLSERVER--属性--登陆--登陆身份--选择"本地系统帐户"或:2.我的电脑--控制面板--管理工具--服务--右键 MSSQLSERVER--属性--登陆--登陆身份--选择"此帐户"--密码和确认密码中输入你修改后的administrator密码.两者的区别:选择第一种方式,以后修改了administrator密码,不用再调整(但要求登陆操作系统的是系统管理员)选择第二种方式,以后修改了administrator密码,还要再重复做上面的操作.需要定期
2011-05-09T07:18:00Z
2011-05-09T07:18:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】首先介绍网络上常用的两种解决方法:1.我的电脑--控制面板--管理工具--服务--右键 MSSQLSERVER--属性--登陆--登陆身份--选择"本地系统帐户"或:2.我的电脑--控制面板--管理工具--服务--右键 MSSQLSERVER--属性--登陆--登陆身份--选择"此帐户"--密码和确认密码中输入你修改后的administrator密码.两者的区别:选择第一种方式,以后修改了administrator密码,不用再调整(但要求登陆操作系统的是系统管理员)选择第二种方式,以后修改了administrator密码,还要再重复做上面的操作.需要定期 <a href="https://www.cnblogs.com/bruce-wong/archive/2011/05/09/2041197.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/05/03/2035660.html
梦想之帆再次启航 - 黄宝强
从上一家公司辞职到今天刚好半个月了,这十五天是我人生至今最为纠结的日子。这段日子我劳于找工作选工作,跑深圳、闯广州的。终于赶在五一假前,给了自己一个最终的答复。以下是我奔波的成果:一、佛山JF:.NET软件工程师,工资不高(四千多吧),其他待遇没问不清楚。这是我提离职单后拿到的第一个OFFER,可能是我当时不了解行情吧,也可能是当时自认为自己是个人才,或许是受到前公司前辈的影响(他们跳槽后的待遇都不错)。呵呵~听到人事说工资暂时只能给这个数了,我想都没想就拒了。后来想想,前景应该还可以的,是做税务一体机的,待遇也是2年工作经验的正常薪资水平了。而且在佛山呢!当然,拒了就不用想了。二、佛山YY:
2011-05-03T12:02:00Z
2011-05-03T12:02:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】从上一家公司辞职到今天刚好半个月了,这十五天是我人生至今最为纠结的日子。这段日子我劳于找工作选工作,跑深圳、闯广州的。终于赶在五一假前,给了自己一个最终的答复。以下是我奔波的成果:一、佛山JF:.NET软件工程师,工资不高(四千多吧),其他待遇没问不清楚。这是我提离职单后拿到的第一个OFFER,可能是我当时不了解行情吧,也可能是当时自认为自己是个人才,或许是受到前公司前辈的影响(他们跳槽后的待遇都不错)。呵呵~听到人事说工资暂时只能给这个数了,我想都没想就拒了。后来想想,前景应该还可以的,是做税务一体机的,待遇也是2年工作经验的正常薪资水平了。而且在佛山呢!当然,拒了就不用想了。二、佛山YY: <a href="https://www.cnblogs.com/bruce-wong/archive/2011/05/03/2035660.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/03/31/1999403.html
C#面向对象编程的3个支柱(一) - 黄宝强
OOP的支柱:封装:隐藏一个对象的内部实现和保护数据完整性。继承:促进代码重用。多态:用同样的方式处理相关的对象。封装的作用OOP的第一个支柱是封装,是将对象用户不必了解的实现细节隐藏起来。如:你正在使用DatabaseReader类,它有Open()与Close()两个方法。//DatabaseReader封裝了操作数据库的细节DatabaseReader dr=new DatabaseReader();dr.Open(@"MyCar.mdf");//使用数据库来做一些事情,然后关闭dr.Close();调用者没有必要担心幕后完成DatabaseReader类的工作的众多
2011-03-31T07:37:00Z
2011-03-31T07:37:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】OOP的支柱:封装:隐藏一个对象的内部实现和保护数据完整性。继承:促进代码重用。多态:用同样的方式处理相关的对象。封装的作用OOP的第一个支柱是封装,是将对象用户不必了解的实现细节隐藏起来。如:你正在使用DatabaseReader类,它有Open()与Close()两个方法。//DatabaseReader封裝了操作数据库的细节DatabaseReader dr=new DatabaseReader();dr.Open(@"MyCar.mdf");//使用数据库来做一些事情,然后关闭dr.Close();调用者没有必要担心幕后完成DatabaseReader类的工作的众多 <a href="https://www.cnblogs.com/bruce-wong/archive/2011/03/31/1999403.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/03/29/1998424.html
C#类类型 - 黄宝强
类类型是由字段数据(成员变量)和操作字段数据的成员(属性、方法、构造函数、事件等)所构成的自定义类型。其中字段数据表示类实例(对象)的状态。在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
2011-03-29T09:01:00Z
2011-03-29T09:01:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】类类型是由字段数据(成员变量)和操作字段数据的成员(属性、方法、构造函数、事件等)所构成的自定义类型。其中字段数据表示类实例(对象)的状态。在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 <a href="https://www.cnblogs.com/bruce-wong/archive/2011/03/29/1998424.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/03/01/1967111.html
C#编程语言(八):可空类型 - 黄宝强
为什么需要可空类型? 例如,数据库中的某个字段可能包含值 true 或 false,但是它也可能根本不包含值。 System.Boolean b=GetDBColumnValue();//如果方法返回一个null值,会收到编译错误。 同样,可以将引用类型设置为 null,以指示它们未初始化。这种不一致会导致额外的编程工作,如使用附加变量来存储状态信息、使用特殊值,等等。可空类型修饰符使 C# 能够创建表示未定义值的值类型变量。可空类型可以表示基础类型的所有值,另外还可以表示 null 值。可空类型可通过下面两种方式中的一种声明:System.Nullable<T> variable
2011-03-01T07:32:00Z
2011-03-01T07:32:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】为什么需要可空类型? 例如,数据库中的某个字段可能包含值 true 或 false,但是它也可能根本不包含值。 System.Boolean b=GetDBColumnValue();//如果方法返回一个null值,会收到编译错误。 同样,可以将引用类型设置为 null,以指示它们未初始化。这种不一致会导致额外的编程工作,如使用附加变量来存储状态信息、使用特殊值,等等。可空类型修饰符使 C# 能够创建表示未定义值的值类型变量。可空类型可以表示基础类型的所有值,另外还可以表示 null 值。可空类型可通过下面两种方式中的一种声明:System.Nullable<T> variable <a href="https://www.cnblogs.com/bruce-wong/archive/2011/03/01/1967111.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/03/01/1967107.html
C#编程语言(七):值类型与引用类型 - 黄宝强
值类型与引用类型值类型:派生自System.ValueType类的类型是值类型,派生自ValueType的类型都会自动在栈(stack)上进行分配,因此有一个可预测的生命周期,而且非常高效。引用类型:在继承链上没有System.ValueType的类型(如System.Type、System.String、System.Array、System.Exception以及System.Delegate)不会在栈上分配,而是在垃圾回收堆(heap)上进行分配。另:C#中的所有基类型都是结构类型(例如:int对应System.Int32结构),结构类型是值类型;类类型是引用类型;栈的执行效率要比堆的执
2011-03-01T06:31:00Z
2011-03-01T06:31:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】值类型与引用类型值类型:派生自System.ValueType类的类型是值类型,派生自ValueType的类型都会自动在栈(stack)上进行分配,因此有一个可预测的生命周期,而且非常高效。引用类型:在继承链上没有System.ValueType的类型(如System.Type、System.String、System.Array、System.Exception以及System.Delegate)不会在栈上分配,而是在垃圾回收堆(heap)上进行分配。另:C#中的所有基类型都是结构类型(例如:int对应System.Int32结构),结构类型是值类型;类类型是引用类型;栈的执行效率要比堆的执 <a href="https://www.cnblogs.com/bruce-wong/archive/2011/03/01/1967107.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/03/01/1967104.html
C#编程语言(六):枚举类型与结构类型 - 黄宝强
枚举类型枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。 例如,假设您必须定义一个变量,该变量的值表示一周中的一天。 该变量只能存储七个有意义的值。 若要定义这些值,可以使用枚举类型。枚举类型是使用 enum 关键字声明的。enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };如果未在枚举数列表中指定元素的值,则值将自动按 1 递增。 在前面的示例中,Days.Sunday 的值为 0,Days.Monday 的值为 1,依此类推。创建新的 Days 对象时,如果
2011-03-01T01:34:00Z
2011-03-01T01:34:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】枚举类型枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。 例如,假设您必须定义一个变量,该变量的值表示一周中的一天。 该变量只能存储七个有意义的值。 若要定义这些值,可以使用枚举类型。枚举类型是使用 enum 关键字声明的。enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };如果未在枚举数列表中指定元素的值,则值将自动按 1 递增。 在前面的示例中,Days.Sunday 的值为 0,Days.Monday 的值为 1,依此类推。创建新的 Days 对象时,如果 <a href="https://www.cnblogs.com/bruce-wong/archive/2011/03/01/1967104.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/02/28/1967097.html
C#编程语言(五):数组 - 黄宝强
数组 数组是一组通过数字索引访问的的数据项。准确来说,数据是一组相同类型的数据点(如: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";除了逐个元素
2011-02-28T08:29:00Z
2011-02-28T08:29:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】数组 数组是一组通过数字索引访问的的数据项。准确来说,数据是一组相同类型的数据点(如: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";除了逐个元素 <a href="https://www.cnblogs.com/bruce-wong/archive/2011/02/28/1967097.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/02/28/1966789.html
C#编程语言(四):方法 - 黄宝强
方法与参数修饰符方法可以有参数,也可以有返回值。方法可以在类或结构范围内实现(也可以在接口中定义命名),可以被各种修饰符(public、virtual、internal、new等)修饰以限定方法的行为。方法的基本格式为:修饰符 返回值 方法名(参数){...}C#参数修饰符C#有一些控制参数是如何传入方法体中的关键字。即C#参数修饰符:(无) :如果一个参数没有使用参数修饰符,则认为它是按值传递给方法体的。方法体收到原始数据的一个副本(copy)。out:输出参数,传入的参数需要在方法体中被赋值,是按引用传递给方法体的。若在方法体中未被赋值会报编译器错误。ref:参数按引用传递。params:
2011-02-28T07:06:00Z
2011-02-28T07:06:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】方法与参数修饰符方法可以有参数,也可以有返回值。方法可以在类或结构范围内实现(也可以在接口中定义命名),可以被各种修饰符(public、virtual、internal、new等)修饰以限定方法的行为。方法的基本格式为:修饰符 返回值 方法名(参数){...}C#参数修饰符C#有一些控制参数是如何传入方法体中的关键字。即C#参数修饰符:(无) :如果一个参数没有使用参数修饰符,则认为它是按值传递给方法体的。方法体收到原始数据的一个副本(copy)。out:输出参数,传入的参数需要在方法体中被赋值,是按引用传递给方法体的。若在方法体中未被赋值会报编译器错误。ref:参数按引用传递。params: <a href="https://www.cnblogs.com/bruce-wong/archive/2011/02/28/1966789.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/02/28/1966724.html
C#编程语言(三):迭代结构与条件结构 - 黄宝强
C#迭代结构for循环如果需要迭代一段代码固定次数,for语句会提供很大的灵活性。从本质上说,我们可以指定一段代码重复的次数和终止条件。for(int i = 0; i < 5; i++){Console.WriteLine("Number is: {0} ", i);}我们可以创建复杂的终止条件,构建无限循环,使用goto、continue和break关键字。foreach循环C# foreach关键字允许遍历数组中的所有项,无需测试数组的上限。int[] myInts = { 1, 2, 3, 4 };foreach (int i in myInts){Conso
2011-02-28T02:03:00Z
2011-02-28T02:03:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】C#迭代结构for循环如果需要迭代一段代码固定次数,for语句会提供很大的灵活性。从本质上说,我们可以指定一段代码重复的次数和终止条件。for(int i = 0; i < 5; i++){Console.WriteLine("Number is: {0} ", i);}我们可以创建复杂的终止条件,构建无限循环,使用goto、continue和break关键字。foreach循环C# foreach关键字允许遍历数组中的所有项,无需测试数组的上限。int[] myInts = { 1, 2, 3, 4 };foreach (int i in myInts){Conso <a href="https://www.cnblogs.com/bruce-wong/archive/2011/02/28/1966724.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/02/28/1966719.html
C#编程语言(二):C#部分内建数据类型 - 黄宝强
System.Console类Console类表示控制台应用程序的标准输入流、输出流和错误流。Console类还定义捕获输入和输出的一套方法,它们都被定义成静态的,因此能够通过将类的名字作为方法的前缀来调用。Write():方法将文本输送到输出流而不附加回车符。WriteLine():将文本字符串(包括一个回车符)输送到输出流。Read():从标准输入流读取一个字符。ReadKey():获取用户按下的一个字符或功能键。ReadLine():从输入流接收信息直到遇到回车符,System.CharC#的文本数据是由内建string和char关键字表示的,它们是System.String和Syste
2011-02-28T02:01:00Z
2011-02-28T02:01:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】System.Console类Console类表示控制台应用程序的标准输入流、输出流和错误流。Console类还定义捕获输入和输出的一套方法,它们都被定义成静态的,因此能够通过将类的名字作为方法的前缀来调用。Write():方法将文本输送到输出流而不附加回车符。WriteLine():将文本字符串(包括一个回车符)输送到输出流。Read():从标准输入流读取一个字符。ReadKey():获取用户按下的一个字符或功能键。ReadLine():从输入流接收信息直到遇到回车符,System.CharC#的文本数据是由内建string和char关键字表示的,它们是System.String和Syste <a href="https://www.cnblogs.com/bruce-wong/archive/2011/02/28/1966719.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/02/27/1966585.html
C#编程语言(一) - 黄宝强
应用程序对象每一个可执行应用程序(控制台程序、Windows桌面程序或Windows服务)必须包含一个定义了Main()方法的类,这个方法用来表示应用程序的入口点。正式地说,定义Main()方法的类叫做应用程序对象。虽然一个可执行程序可以有多个应用程序对象(在执行单元测试的时候可能有用),但是我们必须通过命令行编译器的/main选项来通知编译器将哪个Main()方法用作入口点。Main()的形式Main()的签名(所谓签名,就是指一个方法的名称、返回类型和参数列表)具有static关键字修饰。使用以下任何一种签名都是允许的:static int Main(string[] args){}sta
2011-02-27T15:10:00Z
2011-02-27T15:10:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】应用程序对象每一个可执行应用程序(控制台程序、Windows桌面程序或Windows服务)必须包含一个定义了Main()方法的类,这个方法用来表示应用程序的入口点。正式地说,定义Main()方法的类叫做应用程序对象。虽然一个可执行程序可以有多个应用程序对象(在执行单元测试的时候可能有用),但是我们必须通过命令行编译器的/main选项来通知编译器将哪个Main()方法用作入口点。Main()的形式Main()的签名(所谓签名,就是指一个方法的名称、返回类型和参数列表)具有static关键字修饰。使用以下任何一种签名都是允许的:static int Main(string[] args){}sta <a href="https://www.cnblogs.com/bruce-wong/archive/2011/02/27/1966585.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/02/27/1966583.html
部分.NET开发工具 - 黄宝强
SharpDevelop:功能丰富的.NET免费的IDE,支持Microsoft与Mono的C#编译器。FxCop:根据正式的microsoft.NET最佳实践编码原则(见《.NET设计规范》)测试任何.NET程序集。Reflector:一个高级的.NET反编译器/对象浏览器,可以用来查看使用各种语言的任何.NET类型的.NET实NAnt:可以用于通过基于XML的语法定义和执行详细的构建脚本。一个很受欢迎的自动构建工具。NDoc:可以以多种流行的格式来对C#代码生成代码文档文件(帮助文件)的工具。NUnit:流行的.NET单元测试软件。
2011-02-27T15:08:00Z
2011-02-27T15:08:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】SharpDevelop:功能丰富的.NET免费的IDE,支持Microsoft与Mono的C#编译器。FxCop:根据正式的microsoft.NET最佳实践编码原则(见《.NET设计规范》)测试任何.NET程序集。Reflector:一个高级的.NET反编译器/对象浏览器,可以用来查看使用各种语言的任何.NET类型的.NET实NAnt:可以用于通过基于XML的语法定义和执行详细的构建脚本。一个很受欢迎的自动构建工具。NDoc:可以以多种流行的格式来对C#代码生成代码文档文件(帮助文件)的工具。NUnit:流行的.NET单元测试软件。 <a href="https://www.cnblogs.com/bruce-wong/archive/2011/02/27/1966583.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/02/27/1964035.html
用csc.exe 编译C#程序 - 黄宝强
如果已经安装了.NET开发环境(成功安装了.net 3.5 framewor sdk)。就可以使用C#编译器编(csc.exe)编译c#程序。C#编译器的输出选项/out 用于指定将被构建的程序集的名称。如果没有使用该选择(默认情况下),程序集名跟最初输入的*.cs的名字相同。/target:exe 构建一个可执行的控制台程序。这是默认的程序集输出类型(不指定target时,输出的就是这种类型)。/target:library 构建一个*.dll程序集。/target:module 构建一个模块。/target:winexe 构建一个可执行的windows应用程式。此选择创建的应用程式运行时不
2011-02-27T14:59:00Z
2011-02-27T14:59:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】如果已经安装了.NET开发环境(成功安装了.net 3.5 framewor sdk)。就可以使用C#编译器编(csc.exe)编译c#程序。C#编译器的输出选项/out 用于指定将被构建的程序集的名称。如果没有使用该选择(默认情况下),程序集名跟最初输入的*.cs的名字相同。/target:exe 构建一个可执行的控制台程序。这是默认的程序集输出类型(不指定target时,输出的就是这种类型)。/target:library 构建一个*.dll程序集。/target:module 构建一个模块。/target:winexe 构建一个可执行的windows应用程式。此选择创建的应用程式运行时不 <a href="https://www.cnblogs.com/bruce-wong/archive/2011/02/27/1964035.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/02/24/1963608.html
.NET Framework简述 - 黄宝强
.NET Framework的部分核心功能:对已有代码具有完全的互操作性:可以与COM组件共存及可平台调用(PInvoke)基于C的类库(包括系统的底层API)。完全的语言集成(支持跨语言继承等)所有支持.net的语言共享的公共运行时引擎全面的基类库不关注COM底层操作真正简化部署:在.NET下,不需要把二进制单元注册到系统注册表上。.NET Framework的組成:CLR 公共语言运行库(为我们定位、加载和管理.NET类型,同时也负责一些低层细节的工作,如内存管理,创建应用程序域、线程和对象上下文边界,安全检查等。)CTS 公共类型系统(描述了运行库所支持的所有可能的数据类型和编程结构)C
2011-02-24T08:10:00Z
2011-02-24T08:10:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】.NET Framework的部分核心功能:对已有代码具有完全的互操作性:可以与COM组件共存及可平台调用(PInvoke)基于C的类库(包括系统的底层API)。完全的语言集成(支持跨语言继承等)所有支持.net的语言共享的公共运行时引擎全面的基类库不关注COM底层操作真正简化部署:在.NET下,不需要把二进制单元注册到系统注册表上。.NET Framework的組成:CLR 公共语言运行库(为我们定位、加载和管理.NET类型,同时也负责一些低层细节的工作,如内存管理,创建应用程序域、线程和对象上下文边界,安全检查等。)CTS 公共类型系统(描述了运行库所支持的所有可能的数据类型和编程结构)C <a href="https://www.cnblogs.com/bruce-wong/archive/2011/02/24/1963608.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/bruce-wong/archive/2011/02/10/1950607.html
回调 - 黄宝强
回调(Callback)一词本身指的是可以作为参数传给其他代码的一段可执行代码。普通调用往往是高层代码(如应用程序)去调用处于低层的函数(如系统函数、库函数)。而回调时,则是在低层函数执行时调用高层的代码,此术语由此得名。系统中的对象通过使用回调接口参与双向会话非常普遍,但.net委托类型是.net平台下定义和响应回调的更佳方法。委托类型包含3个重要信息:1.它所调用的方法的名称2.该方法的参数(可选)3.该方法的返回值(可选)标准C语言风格的回调函数不具备后两点,它们除了提供要回调的函数的内存地址外无法表示其他的信息。
2011-02-10T02:57:00Z
2011-02-10T02:57:00Z
黄宝强
https://www.cnblogs.com/bruce-wong/
【摘要】回调(Callback)一词本身指的是可以作为参数传给其他代码的一段可执行代码。普通调用往往是高层代码(如应用程序)去调用处于低层的函数(如系统函数、库函数)。而回调时,则是在低层函数执行时调用高层的代码,此术语由此得名。系统中的对象通过使用回调接口参与双向会话非常普遍,但.net委托类型是.net平台下定义和响应回调的更佳方法。委托类型包含3个重要信息:1.它所调用的方法的名称2.该方法的参数(可选)3.该方法的返回值(可选)标准C语言风格的回调函数不具备后两点,它们除了提供要回调的函数的内存地址外无法表示其他的信息。 <a href="https://www.cnblogs.com/bruce-wong/archive/2011/02/10/1950607.html" target="_blank">阅读全文</a>