c#
文章平均质量分 79
fuadam
无法衡量,即不存在
展开
-
自定义异常
这个非常简单只说两点:1.利用StackFrame来简化错误信息的生成 2.利用自定义异常来简化信息传递.public class BException : ApplicationException ...{ string _errMsg = ""; public BException() : base() ...{} public B原创 2008-01-12 20:55:00 · 821 阅读 · 1 评论 -
对Entity Framework 4.0尝试的吐槽
因为新公司的同事以前用过EF所以在我的项目里面也要用这个,随即上博客园找了几篇文章试验了一下。我用的是VS2010正式版跑网上的代码会报错,这种事真是相当恶心人,要不是没的选择我肯定就放弃这个框架了。用微软的东西无比恶心像EF这种核心必备框架也不弄稳定了就发行1、2、3版,结果到了4.0才刚刚支持POCO这种东西,好像刚出来的时候连从代码创建数据库都不支持原创 2011-02-04 11:29:00 · 2226 阅读 · 0 评论 -
实际项目中使用Postsharp
我现在的项目中使用了winform(.net2.0) + asp.net mvc(.net3.5) + sqlserver2000,Orm使用的是Castle的ActiveRecord。客户端与服务器端通信使用的是Ice,可以通过动态代理切换为webservice或者remoting或者直连本地。而在客户端中是不能直接访问实体类中的延迟加载字段的。你可以专门写个服务来查询这种字段,不过用起来有些原创 2010-01-20 18:00:00 · 4573 阅读 · 4 评论 -
Struct的内存布局
今天雨痕老大在群里出了一个关于struct内存布局的基础问题,大家热烈讨论。晚上又和老大聊了一下发现自己的理解也有些模糊,因此在这里略作记述和大家共享。希望您能够亲自动手实验,并欢迎指正本文的错误。问题:请说出以下struct的实例大小以及内存布局struct Struct1 { public byte a; public short b;原创 2008-11-14 00:33:00 · 2562 阅读 · 9 评论 -
捕获AppDomain中的异常并阻止其继续上抛
最近在做一个插件式客户端框架,系统要求UI插件要运行在一个独立的AppDomain中。不过这里遇到一个恶心的问题:在AppDomain中如何捕获异常。也许您会说使用Application.ThreadException或者Appdomain的UnhandledException事件啊,不过这两种方法我实验都是不成功。Application.ThreadException这个是不能跨dom原创 2008-11-11 21:26:00 · 1873 阅读 · 2 评论 -
使用表达式树提升反射性能
反射是日常编码中不可或缺的重要特性但是大规模应用又会造成性能问题,因此很多人都写了提升反射速度的辅助类库。在.net1.1时代主要应用Emit自己构造IL,这需要你精通IL而且还不能怕麻烦。而在.net2.0时代由于引入了泛型使我们可以利用泛型委托来减少一部分IL Emit过程(详见这里),但是泛型是编译时确定的而我们更多的应用是在运行时得到或设置对象的属性,及动态执行方法。好在.net原创 2008-09-21 23:05:00 · 5377 阅读 · 8 评论 -
垃圾回收时发生的一个诡异问题
前些天在论坛里看到了一篇帖子垃圾收集问题——是不是bug其问题如下:static tc gto; public class tc { public int a=99; ~tc() { a=-1; //set breakpoint 1 gto=this; } } private void button1_Click(object sender,EventArgs e) { tc to=n原创 2008-09-03 22:21:00 · 1987 阅读 · 5 评论 -
简单分析.net泛型中的类型参数
一位朋友询问tppeof、GetType()、is、as的问题,在实验的时候顺手就用泛型写的例子。在看Jit后的反汇编时发现了一个问题,clr对泛型参数有些特殊处理。上网查了一下没有找到介绍泛型参数存储的文章因此动手做了一番实验,有了些浅显的理解在此记录下来望看到此文的高手能给予全面的解释。 以前用泛型的时候没想过clr是如何处理泛型参数的,今天查阅了下>里面讲解了一个叫做Ge原创 2008-09-01 00:08:00 · 3764 阅读 · 4 评论 -
解析.net中ref和out的实质(高手勿进)
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object classid原创 2008-08-29 15:58:00 · 2601 阅读 · 7 评论 -
解析.net中继承的实质
在csdn论坛、博客园里都有很多帖子讨论c#中继承语法的问题,大家乐此不疲的解释virtual,override,new,final,接口,类中的继承。各种各样的例子让新手头晕脑胀,这其中还一些地方以讹传讹。比如这篇文章里面竟然说“编译器会顺着继承链往下找,一直找到合适的那个方法体”,在回复里还有人说“这个特征特现了C#编译器对里氏代换原则的支持。也就是:凡是基类适用的地方子类一定适用。原创 2008-08-25 15:03:00 · 3995 阅读 · 21 评论 -
c#编译器的bug
class GGG { delegate V Func(); public static void TestDelegate(object t) { GetValue(delegate() { return t.GetHashCode(); }); } stat原创 2008-08-18 19:48:00 · 1216 阅读 · 1 评论 -
由struct的静态构造函数说起
最近才知道struct和class的静态构造函数的触发规则是不同的,不像class在第一次使用类的时候触发静态构造函数。如果只访问struct实例的字段是不会触发静态构造函数调用的。通过测试发现当访问静态字段,struct本身的函数(静态和实例)和带参数的构造函数就会引起静态构造函数的执行。而调用默认构造和未覆写的基类虚函数是不会的。为什么呢? 让我们先来看看class和struc原创 2008-08-04 16:04:00 · 4547 阅读 · 4 评论 -
c#3.0,使用传递出来的匿名类型
今天看了csdn上的一段视频讲解c#3.0的,虽然主讲人有点口吃但我还是坚持听完了。里面有一句话我引起了我的兴趣,如果在结构上相同我们就可以对一个匿名类型进行强转。看来在关键时刻我们还是可以直接操作匿名类型的虽然有点麻烦。 我们知道匿名类型实际上就是.net自动生成的一个泛型类,并且只要字段名相同类型相同就会使用同一个匿名类型。所以我们只要类用这个特性就可以把一个通过参数传递的匿名类型进行原创 2008-07-17 14:38:00 · 1378 阅读 · 1 评论 -
利用Linq快速访问对象属性
今天看《Linq in Action》时突然萌生了一个想法使用Expression和Linq来快速访问对象的属性。如果我们把一个对象放到数组中对其进行查询,然后使用select将需要的属性投影出来就可以达到快速访问的目的。虽然比直接访问要慢很多,但是比反射方式快1个数量级还是非常不错的。假设有实体类定义如下:public class User...{ public string原创 2008-04-17 23:29:00 · 1177 阅读 · 1 评论 -
c#4.0中的dynamic还是真好用啊,可以实现二元分派
using System;namespace Test{ class Program { static void Main(string[] args) { var objA = n原创 2011-08-04 15:36:58 · 3963 阅读 · 0 评论