自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

todototry的专栏

个人意见,高手多多指教!!!!!!

  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

原创 多线程

http://www.yesky.com/331/215831.shtml

2009-12-18 10:25:00 551

原创 c#中使用多线程访问 winform中控件的若干问题

c#中使用多线程访问 winform中控件的若干问题2009-12-14 11:12我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。      首先来看传统方法:     public partial class Form1 : Form    {        pu

2009-12-17 23:59:00 1060

原创 C#中构建多线程应用程序 2

C#中构建多线程应用程序 22009-11-28 20:51 3.1.3线程同步  线程同步的访问方式也称为阻塞调用,即没有执行完任务不返回,线程被挂起。可以使用C#中的lock关键字,在此关键字范围类的代码都将是线程安全的。lock关键字需定义一个标记,线程进入锁定范围是必须获得这个标记。当锁定的是一个实例级对象的私有方法时使用方法本身所在对象的引用就可以了,将上面例

2009-12-17 18:52:00 1211

原创 C#委托与事件

http://www.cnblogs.com/JimmyZhang/archive/2007/09/23/903360.htmlhttp://www.cnblogs.com/JimmyZhang/archive/2008/08/22/1274342.html

2009-12-17 17:56:00 645

原创 C#中构建多线程应用程序(1)

C#中构建多线程应用程序(1)2009-11-28 20:51  引言  随着双核、四核等多核处理器的推广,多核处理器或超线程单核处理器的计算机已很常见,基于多核处理的编程技术也开始受到程序员们普遍关注。这其中一个重要的方面就是构建多线程应用程序(因为不使用多线程的话,开发人员就不能充分发挥多核计算机的强大性能)。  本文针对的是构建基于单核计算机的多线程应

2009-12-17 17:34:00 1414

原创 多线程实时监控控件

一、前言      对于多线程实时监控控件,其实现原理无外乎另开一个线程每隔一定时间进行实时监控。大多是使用Timer控件,而system.windows.forms.timer则是主线程执行的,故不能实现。二、.NET提三种记时器     1,System.Timers.Timer:     这个Timer是使用线程池中的线程去执行任务的,可以指定线程池中的某个线程去执行任务。    

2009-12-17 13:28:00 4042

原创 C#类可以自引用(建立在类是引用类型的基础上)

原则:1、C++的类类型是值类型,也就是说实例化个类对象的时候,内存分配在栈上。这样如果类类型这样定义的时候class A{     public:         int i;         A a;}就会陷入无限的死循环,因为实例化一个A的对象object的时候,A要根据成员类型去计算这样一个对象要占用的内存空间(数据成员根据类型确定,成员函数的代码存一份

2009-12-12 12:17:00 2202 1

原创 C#泛型概念

原则: 1、和C++的模板类似,C#的泛型本质就是类型的类型,它定义了一种类型,它的每个实例化对象是一种具体的类型,所以称之为类型的类型 2、它在实例化的时候分成两种情况:引用类型和值类型因为引用类型本质是指针,是内存的地址,所以一定位长的机器上,指针变量所用的字节数是一致的,如32位机使用4字节,泛型本质作为一种定义类型的类型,编译后会有一份二进制代码描述这个类型

2009-12-11 11:01:00 1930 2

原创 C#泛型提供的一定程度的安全性

原则:1、编译期间不知道是什么类型,在运行时确定,这是多态性的基础,所以用object这个最基类来做多态的父类型绝对合适但是因为编译期间不能确定实际使用类型,所以并不安全,而泛型可以提供一定程度上的类型安全检查,比如运行确定出的类首先要支持泛型才能通过编译,这就在编译的时候增加了一定程度的安全性

2009-12-10 15:28:00 935

原创 C#事件的引发与等待

原则:1、一段代码中引发了一个事件,那么所有注册了这个事件的对象,它们的事件处理程序都会执行起来,而且引发事件的这个类(发送器端)的执行会暂时停了,等待其他所有的类的事件处理程序完成之后再继续执行。      一个程序之中,几个对象之间如何传递交互信息,便是这样执行。      这个过程类似于C中的消息传递,一个模块(一段代码)发送一个消息sendmessage,这个消息由系统获知,其

2009-12-09 18:16:00 4339

原创 C#事件为空

原则:1、如果没有为事件写好事件处理程序,那么事件(也是个类,类对象)为空  2、前面所述的事件+=委托(事件处理程序)这种语法格式的语句,只是把事件和事件处理程序关联了起来,并且在这个时候,事件处理程序已经是肯定定义了,因为传入了事件处理程序的称,也就是说指明了事件发生时用哪个函数,这同时说明,这种关联是写在事件接收器的(一般用户编写代码都是在事件接收器,比如系统事件

2009-12-09 17:51:00 7038

原创 C#事件概念

原则:1、C#事件本质就是对消息的封装,用作对象之间的通信;发送方叫事件发送器,接收方叫事件接收器;2、发送器不知道接收器的任何情况,但接收器有一个事件处理程序来处理这个事件(当事件发生时);那么发送器和接收器之间如何进行通信呢?用事件,用委托,简单地来理解把事件理解成消息即可。先定义个委托,要使用的事件处理程序的签名(也就是函数类型,返回值,参数个数,参数类型等等)由这个委托定义,委

2009-12-09 15:16:00 17143 1

原创 C#事件处理程序的写法

原则:1、sender是一个object定义类型,利用oo多态的功能,父类引用一个子类实例化对象完全可以,在执行的时候解析成个子类的对象,当然要调用子类扩展的成员时直接用sender不行,因为毕竟在形式上是父类类型,父类里面没有这样的成员,虽然它在实际上是一个子类的对象,这时候,强制类型转化,当子类用(实际在内存就是,当然安全)    

2009-12-08 09:44:00 2102

原创 C#委托的参数类型抗变

原则: 1、把派生类对象传给基类型的参数,这完全可以,多态性能够使得在程序运行的时候,基类型完整确认绑定到子类对象 2、p是个基类对象也可以执行,原因在于真正的代码Method2中处理的是它的参数基类对象的数据,所以不会出现基类没有的部分,所以使用的各个成员都是有意义的;派生类那就更没有问题了,因为派生类完整包含了基类,基类有的派生类的都有;但是反过来,Method2如果使用的是派

2009-12-07 22:27:00 931

原创 .和::

原则:1、C#中对于静态成员的引用也是用.不是用::2、C++中对于静态成员的引用是用::3、C#中::用在命名空间别名,叫命名空间别名限定符

2009-12-07 17:24:00 518

原创 C#委托的基本用法

原则:1、委托本质就是个指针,一个函数指针,拿到函数的首地址即可;C#的委托加了安全性,体现在对于函数指针所引用的函数指令块的类型检测,比如返回值,参数类型,参数个数而C中的函数指针被赋值的时候(在C#中,就是委托实例化的时候,因为C#中后台将委托处理成一个类了,封装了哈)被赋予的值是否满足类型的种种条件(返回值,参数类型,参数个数)不做检查,由用户给出保证,C#会编译提示出来 

2009-12-07 14:34:00 1165

原创 C#委托所蕴含的函数指针概念

原则: 1、函数指针,实际上是函数编码后的指令在内存中的首地址,在C++/C中,这个地址可以用函数名直接使用一个函数调用另一个函数的时候,就可以把被调用函数以函数指针的形式作为参数传入 2、回调函数callback使用的技术就是函数指针:     回调函数就好像是一个中断处理函数,系统在符合你设定的条件时自动调用。为此,你需要做三件事:   1). 声明;   2)

2009-12-07 09:11:00 1565

原创 C#中类类型之间的显示转化定义

原则:1、必须定义在类的内部(源或者目的),这样的目的是不让第三方把数据类型转化引入到类中,这样只能执行用户所给出的类类型之间的数据转换2、执行类类型的转换需要两个没有派生关系的类之间,有派生关系的类之间系统给出隐式类型转换(向上转换,子类型转为父类型)3、两个类之间的类类型的转换,当然定义两个转换符,A到B时定义operator B;B到A时定义operator A;这两个转换符的实

2009-12-06 18:41:00 1116

原创 C#要求运算符重载必须是public和static

原则:1、C#要求运算符重载必须是public和static,而且因为规定了必须是static,所以它是和类相关联而不是和类的实例化对象相关联所以只能访问类的静态成员因为类未实例化的时候,非静态成员还没有得到分配的内存,更不用说有具体的有意义的值了但这时候静态成员函数是可以执行的,假设能访问非静态数据成员,它访问的是一个无意义的值

2009-12-06 16:35:00 2183

原创 C#属性的基本用法

原则:1、属性是oop思想的语法形式的表现本质就是不能直接访问数据成员,而通过属性来访问,所以一般把数据成员设置成为private在C++同样的功能是提供public的成员函数来实现的,比如void set(){//...}和void get(){//...}两个成员函数来设置获取私有数据成员的值,只有这样的途径去改变数据成员的值,其他的方法是非法的,便于看到成员数据值改变的地方在

2009-12-06 16:26:00 730

原创 值类型使用ReferenceEquals方法

原则:1、ReferenceEquals方法用于变量的比较,如果是引用类型则比较两个引用是否引用到了相同的实例化对象;如果是值类型,则先装箱然后传入装箱后的参数,然后比较两个装箱的引用,可以说,比较值类型的时候,总是不同的即使 int i = 3;bool bIsSame = ReferenceEquals(i, i); 也是不一样的,因为这时后台这样处理,对于第一

2009-12-06 14:51:00 778

原创 静态方法不能够进行重写

原则:1、静态具有全局的概念,不属于了单个的类实例化对象,而是属于类整体;类定义完成的时候,静态成员便可以使用了,继承类不能重写静态成员函数,假设重写了(当然仍是静态),那么就是说两个全局化的非重载的函数,会引起二义性,因为覆盖只发生在子类与父类之间,当全是静态成员的全局性质时,这种子父类的概念已经不存在了,所以就不会覆盖,造成编译的二义性两个同名而且不重载的函数(全局性质的),显而易

2009-12-06 13:59:00 8352

原创 C#的装箱与拆箱

原则:1、装箱:将值类型转化为引用类型方法:通过创建临时对象,由.net后台执行原因:在C#中值类型和引用类型存放的内存位置不同,所以转化的时候涉及到内存迁移,所以提供这样的技术来实现内存迁移 int i = 10;string s = i.ToString();这样是不行的,因为i是一个值类型,不能调用ToString方法 int i = 10;objec

2009-12-06 12:02:00 693

原创 C#可空类型概念

原则:1、可空类型有一个所依赖的基本类型,只是额外提供了功能,使得不能作为空值的该类型有了得到null值的功能例如: int ? a;a = null; 如果是int a;a = null;    //这是不能赋值的语句 2、在引入可空类型之后,就需要对原本不存在的null运算作出规定,如int b = 3;b+a这样的表达式在a= null值时

2009-12-06 11:30:00 458

原创 C#迭代器的实现

原则: 1、迭代器的本质就是指针,指向对象的地址,一般就是以对象的引用出现常见的是一个函数返回一个对象的引用,这个对象的引用可以在数组,集合各个元素之间移动(本质就是指针的移动,移动sizeof(classType)个字节)在Think in C++中有迭代器的实现代码STL源码剖析也有描述 2、在C#中,只是出现了接口这样的纯函数类的概念,于是把这些返回引用的函数

2009-12-05 23:45:00 637

原创 C#的锯齿数组以及C++实现

原则:1、锯齿数组首先是二维数组,第一维的维数是确定的2、之所以在C#中能够出现灵活的锯齿数组,是因为,C#的数组是引用类型(本质上存放的是指针)根据这个引用类型(指针)的概念,C++中用指针数组同样可以实现 C#中:class A{} int szA[][] = new int[3][];szA[0] = new int[2];szA[1] = new i

2009-12-05 18:44:00 1777

原创 C#数组变量的内存分配

原则:1、简单的值类型的数组,每个数组成员是一个引用(指针),引用到栈上的空间(因为值类型变量的内存分配在栈上)2、引用类型,类类型的数组,每个数组成员仍是一个引用(指针),引用到堆上的空间(因为类的实例的内存分配在堆上) class Person{} Person[] myPerson;myPerson = new Person[2];myPerson[0] =

2009-12-05 17:44:00 5085 1

原创 C#接口所蕴含的多态概念

原则:1、所谓多态,是指在程序运行的时候确定真正的对象类型使用方法,用一个父类的指针,可以指向所有的子类对象,在程序执行的时候,确定下来具体的哪一个子类,此后这个父类指针便具体化为相对应的子类的指针,去调用想对应的子类的所有可用资源class Base{}class A:public Base{     public:     void fun(){cout    

2009-12-04 21:37:00 831

原创 构造函数执行,base与this关键字

原则:1、任何类的构造函数,一定要是public的,才能派生子类         class Base        {            private int i;            public Base(int i)             {                this.i = i;                Console.WriteLine("Ba

2009-12-04 16:59:00 1879

原创 默认权限

原则: 1、C++中默认权限是public,而且可以成块地设置权限 2、C#中默认权限是private,只能一个成员一个成员(数据成员,成员函数,接口,属性)地设置 C#中public class A{   void fun(){}   int i;} 等价于public class A{    private void fun(){

2009-12-04 16:45:00 666

原创 私有构造函数对子类构造的影响

原则: 1、原则就是原则,private成员,只有类本身才能使用,子类是不能使用的因为C#只有共有继承的概念C++有公有继承,保护继承,私有继承三种 2、C++的私有继承是可以使用父类的的私有数据成员和私有成员函数的 3、构造函数析构函数在C++和C#都是不能继承的。         class Base        {            privat

2009-12-04 16:42:00 775

原创 继承就是全部的包含,级别只说明访问权限

原则:1、子类继承父类,则拥有父类全部的成员,以及函数包括私有数据成员,只是子类不能访问而已2、        class Base        {            private int i;        }        class A : Base        {            public int j;        } 这样一个A类实例化对象,

2009-12-04 15:29:00 575

原创 抽象函数与抽象类

原则: 1、抽象函数对应于C++中的纯虚函数,虚函数:是有具体实现,可以在子类中重写的函数纯虚函数(抽象函数):没有任何实现,在子类中必须的进行重写才能实例化(子类是抽象类时除外) 2、含有抽象函数的类,必然是抽象类假设能够实例化,那实例化的对象调用这个函数的时候,执行什么代码呢? 3、纯虚函数=0写法的改变从这个写法的改变,说明了C#中默认构造函数的功能不

2009-12-04 10:32:00 900

原创 子类中的base代表直接父类

原则:1、子类中的base代表直接父类,而并不是System.Object类        class BaseClass        {            public double fun()            {                return 100;            }        }        class ChildClass:Base

2009-12-04 10:11:00 1206

原创 重载可以发生在子父类

原则:1、继承来的成员函数就像自个定义的一样,所以能构成重载         class BaseClass        {            public void fun()            {                Console.WriteLine("base fun !");            }        }         class

2009-12-04 09:48:00 1462

网络安全网络方案IP视频会议系统

IP视频会议系统 IP视频会议系统 IP视频会议系统 IP视频会议系统 IP视频会议系统 IP视频会议系统

2011-04-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除