摘要:
第一章在Delphi中使用接口 1.1 定义接口:目的:什么是接口,以及和抽象类的关联以及不同点。抽象类(备注理解接口最简单的方法)永远不能创建一个抽象类的实例;本身不能实现功能,依靠派生类实现;接口被申明为interface类型。接口名从字母I开始。类类型名从T开始。所有的接口从IUnknown继承;不能创建接口实例;不能在接口中指定范围指示。所有的方法都是公有型(public),不能在接口中申明包括范围指示;不能申明变量;接口只能决定提供什么样的功能,对于如何完成功能没有限制;接口中申明的所有函数和过程,概念上都是虚抽象函数和过程;因此申明时不能带Virtual;接口是不变的;1.2申明一 阅读全文
摘要:
一、C++中不能使用random()函数 random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过。 可改用C++下的rand函数来实现。 1、C++标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX必须至少为32767。rand()函数不接受参数,默认以1为种子(即起始值)。 随机数生成器总是以相同的种子开始,所以形成的伪随机数列也相同,失去了随机意义。(但这样便于程序调试) ... 阅读全文
摘要:
sdk方式 CreateWindow("BUTTON",NULL, WS_VISIBLE|WS_CHILD,sq.ps[i].x*UNIT_SIZE,0,UNIT_SIZE,UNIT_SIZE,hWnd,NULL,hInst,NULL) 阅读全文
摘要:
在编写国际化的应用程序里,经常要使用不同语言的字符串。比如中文菜单里叫做“文件”,而在英语里叫做“File”。开发这种软件的功能是一样的,只是界面上显示的文字不一样而已。为了方便这种软件的开发,在Windows里经常使用的方法就是替换掉显示的字符串,比如指定在中文里就显示“文件”,在英语里就显示“File”,是通过函数LoadString从不同的资源里加载不同的字符串显示来实现的。其实所有可变的字符串,都可以使用函数LoadString从资源里加载字符串显示。图像的信息是非常方便人们记忆的,像交通信号一样,就是使用各种各样的图标,每个人看了就会明白是什么东西,因此在程序里使用图标来标识程序。只 阅读全文
摘要:
一、概述 当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为对象。 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 二、对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 我们经常需要将对象的字段值保存到磁盘中,并在以后检索此数据。尽管不使用序列化也能完成这项工作,但这种方法通常很繁琐而且容易出错,并且在需要跟踪对象的层次结构时,会变得越来越复杂。可以想象一下 阅读全文
摘要:
using System;using System.Collections.Generic;using System.Text;using System.Threading;namespace sample{ class AsyncDemo { public string TestMethod(int callDuration, out int threadid) { Console.WriteLine("Test Method begins"); Thread.Sleep(callDuration); threadid = System.Threading.Thread. 阅读全文
摘要:
BeginInvoke,有两个参数,一个调用方法的参数列表。 例如:delegateintTestDelegate(inti);intAdd(inti){}TestDelegatetd=newTestDelegate(Add);td.BeginInvoke(1/*params*/,null,null);代码中 1 就是参数列表了,数量可以是0-N,数量对应方法的参数个数! 列表参数之后就是第一个参数AsyncCallback callback,这个参数也许也是个委托吧!如果方法执行完毕。就调用callback的方法执行后续。这个可为null 第三个参数是Object asyncState,如果 阅读全文
摘要:
//要进行异步的方法privatestringMethod1(intN,outintN2)...{N2=N;returnN.String();}//定义与方法同签名的委托privatedelegatestringDelegateName(intN,outintN2);//程序入口privatevoidMain()...{//实例化委托DelegateNamedn=newDelegateName(Method1);inti;//异步开始IAsyncResultiar=dn.BeginInvoke(1,outi,null,null);//去做别的事//…………//做完别的事//异步结束string 阅读全文
摘要:
引言委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。将方法作为方法的参数我们先不管这个标题如何的绕口,也不管委托究竟是个什么东西,来看下面这两个最简单的方法,它们不过是在屏幕上输出一句问 阅读全文
摘要:
首先我们来看一下泛型的基本概念。 最显著的一点就是它参数化了类型,把类型作为参数抽象出来,从而使我们在实际的运用当中能够更好的实现代码的重复利用,同时它提供了更强的类型安全,更高的效率,不过在约束方面,它只支持显示的约束,这样在灵活性方面就显得不是那么好了。我觉得它之所以能够提供更高的效率是因为泛型在实例化的时候采用了"on-demand"的模式,即按需实例化,发生在JIT(Just In Time)编译时。 下面来看如何定义一个泛型类,很简单,你只需要意识到一点,在这里,类型已经被参数化了: //如果这样写的话,显然会报找不到类型T,S的错误publicclassTest 阅读全文