判断泛型的值是否为default(T)
摘要:1: public static bool IsDefault<T>(this T value) 2: { 3: //... 4: }1. ==的问题 如果用==直接判断(default(T) == value),编译时会提示错误:Error CS0019: 运算符“==”无法应用于“T”和“T”类型的操作数 (CS0019)。2. object.Equals的问题 object提供了一个静态方...
阅读全文
posted @
2011-06-21 23:00
Silent Void
阅读(7142)
推荐(0) 编辑
SpeechSynthesizer/WaveHeader 存在严重的内存泄漏
摘要: .Net Framework 3.0带了个System.Speech.dll,装个语音包,然后就可以实现文字朗读等功能。最近在使用的时候,发现随着程序的运行,程序占用的内存一直在增长,直到程序崩溃。
用WinDbg抓了个Dump,然后看了下,里面一堆没有释放的SPVTEXTFRAG、AudioDeviceOut+InItem、WAVEHDR、WaveHeader对象。。。
阅读全文
posted @
2010-11-07 20:52
Silent Void
阅读(4633)
推荐(6) 编辑
共享组件(有码):将文件中数据导入到DataTable
摘要:功能:
1.自由配置文件格式:生成的DataTable的主键、文件内容中是否有表头、列分隔符、列是否可空、列中数据类型(String型可加长度限制)、列是否导进DataTable;
2.支持TXT、CSV、XLS、XLSX格式;(08-11-29日更新,增加了Xls和Xlsx文件导入支持)
3.生成错误信息报告:支持读到N条错误数据后,终止文件解析(N可配置,暂时先写死在Code中,提供源码可自行加入配置);
4.解析大文件时,支持行读;
5. 支持传入文件名或者Stream(例如Web上传后直接取得数据流)
阅读全文
posted @
2008-10-29 00:03
Silent Void
阅读(1246)
推荐(2) 编辑
C#3.0语法糖学习笔记
摘要:0. Auto-Implemented Properties;
1. Object initializers;
2. Collection Initializers;
3. Anonymous Types;
4. Extension Methods;
5. Lambda Expressions;
6. Partial Methods
阅读全文
posted @
2008-01-17 19:50
Silent Void
阅读(1334)
推荐(0) 编辑
几个常用的位操作
摘要:O(1)判断无符号整数x是否是2的幂;
O(1)判断一个无符号整数是否为2^n-1的形式;
O(1)求整数能被最大的2的幂(?)整除 : 析出最右侧为1的位;
计算整数中有多少个为1的位;
获取下一个具有同样数量的1位的更大的数;应用:在用位串表示集合的子集时
阅读全文
posted @
2007-04-24 13:10
Silent Void
阅读(1218)
推荐(0) 编辑
托管堆上对象的大小(Size)和Layout
摘要: 默认情况下,C#编译器会在引用类型上运用[StructLayoutAttribute(LayoutKind.Auto)]特性,即按照CLR认为的最佳方式来排序实例中的字段顺序;当运用[StructLayout(LayoutKind.Sequential)]特性时,CLR会按照字段成员在被导出到非托管内存时出现的顺序依次布局,但我的测试结果是:貌似使用LayoutKind.Sequential与使用LayoutKind.Auto的结果相同;当运用[StructLayout(LayoutKind.Explicit)]时,我们可以自己设置实例中字段的位置。
在32位的计算机上,默认情况下,对于引用类型的实例,CLR总是按4byte进行内存对齐。
阅读全文
posted @
2007-04-17 16:42
Silent Void
阅读(7018)
推荐(0) 编辑
Effective C# 摘录(6) - 杂项讨论
摘要:优先选择强异常安全保证;最小化互操作;优先选择安全代码;掌握相关工具与资源;为C#2.0做准备;了解ECMA标准
阅读全文
posted @
2007-04-11 01:04
Silent Void
阅读(542)
推荐(0) 编辑
Effective C# 摘录(5) - 使用框架
摘要:重写函数优于事件处理器;理使用.NET运行时诊断;使用标准配置机制;定制和支持数据绑定;使用.NET验证;根据需要选用恰当的集合;优先选择DataSet,而不是使用自定义结构;利用特性简化反射;避免过度使用反射
阅读全文
posted @
2007-04-09 23:21
Silent Void
阅读(658)
推荐(0) 编辑
Effective C# 摘录(4) - 创建二进制组件
摘要:尽可能实现CLS兼容的程序集;尽可能实现短小简洁的函数;尽可能实现小而内聚的程序集;限制类型的可见性;创建大粒度的Web
阅读全文
posted @
2007-04-08 11:28
Silent Void
阅读(788)
推荐(0) 编辑
类的静态构造函数的其他几个注意点
摘要:禁止在一个类的静态构造函数中访问另一个类中的静态成员…… 在类的静态构造函数不能有异常抛出…… C#中不支持子类继承父类的静态成员,但却可以通过子类类名来访问父类的静态成员……
阅读全文
posted @
2007-04-05 18:58
Silent Void
阅读(1055)
推荐(0) 编辑
静态构造函数的执行时机
摘要:if(如果为类显式定义静态构造函数,例如上面的Type1) { if(程序中有访问该类的任意静态或实例成员) { 在进入Main函数之后,第一次访问该类中所定义的任何静态或实例成员之前,先调用静态构造函数; 以后将不再调用该静态构造函数,同一个静态构造函数最多只调用一次! } else { 程序中不调用该类的静态构造函数; } else { if(程序中有访问该类的任意静态或实例成员) { 在执行Main函数中的代码之前,先调用静态构造函数; 以后将不再调用该静态构造函数,同一个静态构造函数最多只调用一次! } else { 程序中不调用该类的静态构造函数; } }
阅读全文
posted @
2007-04-04 07:17
Silent Void
阅读(1187)
推荐(0) 编辑
用伪随机数生成器Random生成随机数序列
摘要:伪随机数(有库函数产生)与“理想中的”“真”随机数不同,伪随机数是由可确定的(deterministic)函数产生,虽然随机函数可以产生有随机特征的数字序列,但这些数字并不不具备真随机数的一些特性,并非统计意义上的随机数。伪随机数是可以确定的:知道序列中的一个数就可以获得其他剩下数字的有关信息;事实上,如果知道了序列的初始值(种子)通常可以确定整个序列。记得大一上计算机专业基础课的第一节课上,老师就给我们介绍了计算机程序的5个特性(详见附1),其中的一点就是确定性,即“对于相同的输入只能得出相同的输出”,伪随机数的生成正是符合这条金科玉律……
阅读全文
posted @
2007-04-03 15:08
Silent Void
阅读(12087)
推荐(1) 编辑
Effective C# 摘录(1) - C# Language Elements
摘要:C# Language Elements……
阅读全文
posted @
2007-03-15 14:35
Silent Void
阅读(355)
推荐(0) 编辑
ASP.NET性能笔录zz
摘要:并不是在项目开发完毕后进行性能优化,而是在初步设计的时候考虑的问题
阅读全文
posted @
2007-03-10 23:14
Silent Void
阅读(543)
推荐(0) 编辑
[C]有符号数和无符号数
摘要:C支持所有整形数据类型的有符号数和无符号数运算。尽管C标准并没有指定某种有符号数的表示,但是几乎所有的机器都使用二进制补码。通常,大多数数字默认都使有符号的,C也允许无符号数和有符号数之间的转换,转换原则是基本的位表示保持不变。因此在一台二进制补码机器上,当从无符号数转换为有符号数时,效果就是应用U2Tw,而从有符号转换为无符号数时,就是应用函数T2Uw......
阅读全文
posted @
2006-12-20 22:39
Silent Void
阅读(2951)
推荐(0) 编辑
C中的移位运算
摘要:C标准并没有明确定义应该使用哪种类型的右移。对于无符号数据(unsigned Type),右移必须是逻辑的;对于有符号数据,C标准并没有规定使用哪种方式的右移,而实际上,几乎所有的编译器/机器组合都对有符号数据进行算术右移....
阅读全文
posted @
2006-12-20 07:20
Silent Void
阅读(1416)
推荐(0) 编辑
应考虑字节顺序(大小端问题)的几种情况
摘要:在几乎所有的机器上,多字节对象被存储为连续的字节序列,对象的地址为所使用字节序列中最低字节地址。某些机器选择在存储器中按照从最低有效字节到最高有效字节的顺序存储对象,这种最低有效字节在最前面的表示方式被称为小端法(little endian)(e.g.:Intel处理器上运行Linux,NT);某些机器则按照从最高有效字节到最低有效字节的顺序储存,这种最高有效字节在最前面的方式被称为大端法(big endian)(e.g.:Sun Microsystem UltraSPARC运行Solaris)。一般情况下,我们不必考虑字节顺序,但在下列三种情况下,字节顺序变得非常重要....
阅读全文
posted @
2006-12-19 21:33
Silent Void
阅读(1880)
推荐(0) 编辑
“精确”判断一个浮点数是否等于0
摘要:IEEE754标准中,单精度浮点数(4byte)表示法:1bit符号位(S),8bit指数位(E,用阶码表示),23bit小数部分(尾数M)......
阅读全文
posted @
2006-11-18 07:06
Silent Void
阅读(9203)
推荐(0) 编辑