- 博客(13)
- 资源 (2)
- 收藏
- 关注
原创 c#多线程之mutex,semaphore,autoresetevent,manualResetevent
mutex,semaphore,autoresetevent,manualResetevent四个类都继承自waitHandle类,其中autoresetevent,manualResetevent都继承自EventWaitHandle,且EventWaitHandle的构造函数提供了一个入参EventResetMode来设置为manualreset还是autoreset,故我们只需查看mutex
2012-11-17 13:16:01
4088
原创 c#多线程之monitor和lock
monitor关键字可以锁定对象,lock为互斥锁,可以锁代码,但二者的实质一样的,lock也是使用monitor的enter和exit实现的,实质上只是将该对象作为一个标识而已,当一个线程尝试进入到被lock或monitor锁住的代码,都需要把当前lock对象和已存在的锁对象进行一一对比,使用object.referenceEquals()。 monitor类所以名义上说的是锁一个对象,但实际
2012-11-15 17:09:33
766
原创 一个依赖项属性的应用
一种应用方法是使用依赖项属性代替INotifyPropertyChanged接口,将界面绑定的数据源属性声明为依赖项属性,就可以自动更新到界面了,使用了wpf的内置机制,之前有一篇文章写了一个例子。 今天写的应用是重写一个控件,新空间使用依赖项属性来扩展wpf内置控件的功能,不过我的这个控件更多是为了方便使用,类似于是老控件的一个对象,只用于某种特殊的表示方式,来源于一道面试题,两个combob
2012-10-02 12:01:35
2315
原创 wpf 依赖项属性
UI软件中经常会用到大量的控件,而每一个控件都是一个对象,每一个类都会有大量的属性,如果没创建一个对象就将所有的属性都创建出来,无非会占用大量的内存,wpf使用依赖项属性来提升了性能。 查看任何一个控件的定义,以button为例,都会发现类内包含大量的依赖性属性定义,注意到其中DependencyProperty都是static readonly的,而每一个依赖项属性都会有一个去掉“Proper
2012-10-01 22:35:17
4778
原创 随笔记录
C++中的函数调用入参和返回值均会拷贝一份,不管指针还是值,区别的是指针不管怎么拷贝他的值(指向的地址)不变,所以使用指针能够改变原值。 const 值类型和非值类型可以任意赋值,但是const指针类型和非指针类型却不可以,如: int it=3; const int it_c=it; int tt=it_c; 编译通过 int it=3;
2012-09-14 15:18:11
616
原创 c# 代理 事件
.net中包括两个Delegate类,一个是Delegate,一个是MulticastDelegate,其中后者继承自前者,但两者皆为抽象类,且后者为隐式sealed,不能继承,也就是不能创建实例,那么要想创建代理类应该怎么做呢,net提供了delegate关键字,使用该关键字标示的类型会被编译器自动编译为继承自multicastDelegate的类,见如下截图 multicastdel
2012-09-12 14:05:56
552
原创 快速排序c#
都说快速排序是冒泡排序的改进,说实话,这点我还真不太明白,貌似两者没有直接关系啊,不知道改善的入手点是哪里,不管怎样,先来看看算法吧。 思路:将一个数组一分为二,一个部分均比另一部分小,然后再分别对两部分进行排序,依此类推,即可完成排序。 算法:using System;using System.Collections.Generic;using System.Text;
2010-05-29 15:39:00
411
原创 迭代器和组合模式
迭代器:当一个类A要将两个类B,C包含的内容整合到一起,而这两个类的内容使用不同的数据结构时,例如一个是数组,一个是List解决方法就是将分别将B,C中的内容提取出来到一个新的结构中,如果这个事情由A来做:A需要知道B,C内部的具体实现,代码如下: class C { C() { for (int i = 0; i
2010-05-23 19:23:00
826
1
原创 我做的对吗
今天终于给那家公司反馈了,没有去。原因是薪资太低。可是我的心里并没有轻松,我不知道我做的对不对,我还是没有弄明白自己要的是什么。我从工作就开始做外包,两年了,做的很腻了,很多时候觉得不是在做项目,很多时候没有自主权,学的东西也很少,很想跳出去,不再做了。可是为什么这个机会我不要?因为公司小,因为公司新,因为薪水太低?其实这并不能说服我自己,我渴望做自己的项目,自己的创意,自己搭框架,自己做设计,这
2010-05-21 22:44:00
613
2
原创 .Net垃圾回收机制初探
今天终于搞明白了一些,先记下,免得忘了。需要了解的概念(转自http://blog.sina.com.cn/s/blog_5aeeb8200100blua.html):a.其中托管资源一般是指被CLR控制的内存资源,这些资源的管理可以由CLR来控制,例如程序中分配的对象,作用域内的变量等。b.而非托管资源是CLR不能控制或者管理的部分,这些资源有很多,比如文件流,数据库的连接,系统的窗口句
2010-05-16 00:44:00
1355
1
原创 .Net中代理和事件的区别
今天看书分别看了一下这两章,以下仅是自己总结的区别,不全面。 1.事件是特殊的代理,特殊之处在于参数。事件的参数是object 和一个继承自EventArgs的参数。如果参数不符仍然使用event关键字标识,编译器会给出warning。 2.事件使用event关键字标示,编译器将public event EventHandler NewMail=null;这行代码编译为以下三个结构: 1.p
2010-05-09 11:26:00
1440
原创 WPF中的依赖项属性
已经学习了好几天了,一个小例子让我豁然开朗,以下是我个人的一点理解:由于WPF由XAML文件和c#文件组成的,c#负责逻辑处理,所以很多控件属性就会别修改,此时我们希望他能够反映到界面上,依赖项属性就能够做到这点。当然系统的控件的一般的属性都是依赖性的,我们不必担心,但在数据绑定的时候,我们会经常绑定到对象,这就要求对象的属性变化是也要通知到对象。通常可以采用PropertyChangedEv
2008-09-03 16:51:00
3844
4
原创 C#中三维正交数组的创建
开始时搞不懂初始化顺序,后来成功了,就顺手记录下来.首先应该知道数组是一个类,类是引用类型,那么初始化就应该用new,否则就不分配内存,只是一个名字而已。先想一想二维正交数组: int[][] smallarray = new int[2][]; smallarray[0] = new int[2]; smallarray[1] = new int[3];此时如果将后两句屏蔽
2008-05-05 14:33:00
1639
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人