
C# 3.0(.net 3.5)
文章平均质量分 81
蝈蝈俊
蝈蝈俊.net
展开
-
LINQ的经典例子-Where,Select、SelectMany、SkipWhile子句中使用数组索引
Where 子句的用法我们除了可以如下方式书写带Where子句的LINQ外: from p in products where p.UnitsInStock > 0 && p.UnitPrice > 3.00M select p;还可以对数组(所有实现了IEnumerable接口的对象都可以)的实体使用 Where 扩展方法。 把一个查询语句写成多个扩展函数的方式,这其实原创 2007-07-03 10:54:00 · 20586 阅读 · 0 评论 -
Orcas Beta1 对多个同名扩展方法的处理逻辑
扩展方法是一个双刃剑,你如果要用扩展方法,就一定得准备碰到别人也用扩展方法,并且万一出现你们都对同一个类进行扩展函数名,参数一样的扩展时候, 会出的各种问题. 说明:以下测试是基于Orcas Beta1环境的测试,VS2008 正式版发布后,也许会发生变化。 如果你对扩展方法不是很熟悉,建议先看我之前的两篇博客:C#3.0 中的扩展方法 (Extension Methods原创 2007-06-12 18:39:00 · 4488 阅读 · 1 评论 -
ASP.net 页面被关闭后,服务器端是否仍然执行中?
问题:当一个正在执行中的ASPX页面执行到一半的时候,浏览器中你关闭了这个页面,服务器端对应的这个页面的代码仍然在执行么? 答案:除非你代码里面做了特殊判断,否则仍然正在执行。 注意点: 1、客户端显示页面的时候,后台已经执行完了的页面对象早已经不存在了。当然这时候谈不上服务器段执行不执行的问题了。 2、页面还没有返回,处于等待状态的时候。关闭ASPX页面,才会涉及到上面提到的服务器原创 2008-07-23 15:45:00 · 6538 阅读 · 5 评论 -
IIS5、IIS6、IIS7的ASP.net 请求处理过程比较
ASP.NET是一个非常强大的构建Web应用的平台,它提供了极大的灵活性和能力以致于可以用它来构建所有类型的Web应用。 绝大多数的人只熟悉高层的框架如: WebForms 和 WebServices --这些都在ASP.NET层次结构在最高层。 这篇文章的资料收集整理自各种微软公开的文档,通过比较 IIS5、IIS6、IIS7 这三代 IIS 对请求的处理过程, 让我们熟悉 ASP.NE原创 2008-07-25 15:13:00 · 6175 阅读 · 4 评论 -
Debug方式调试GAC中部署的程序
我们在调试GAC中部署的程序时候,很可能碰到下面的报告: --------------------------- Microsoft Visual Studio --------------------------- The following module was built either with optimizations enabled or without deb原创 2008-08-28 16:27:00 · 3413 阅读 · 0 评论 -
代码优化出的问题
今天碰到了一个超级怪异的问题, Visual Studio 调试一段代码时,如下图:监视窗口显示这个变量有值,但是代码却执行到这个变量无值的逻辑中了。 为了这个问题,我简直疯了。 后来看到其中一些变量的察看时,会报错误 Cannot obtain value of local or argument oo as it is not available at this instruct原创 2008-08-29 18:25:00 · 2865 阅读 · 6 评论 -
《WPF在商业应用程序上对开发人员的帮助》听课笔记整理
今天在SD2大会上,K2大中华区CTO彭靖灏分享了他们公司在做K2的时候,对使用WPF的心得,我觉得很有启发。整理这部分的听课笔记如下: K2是一个很流行的工作流设计软件 http://www.k2.com/zh-CN/index.aspx 他们在最新的K2版本中使用了 WPF,WCF,WF。 他们是在做商业软件,商业软件使用WPF的一些心得,对我们作软件时候,很有醒示作用。 他们在做原创 2008-12-06 20:18:00 · 2716 阅读 · 1 评论 -
“变化”、“复用”、“抽象”、“稳定”影响着软件设计模式,架构,开发方法
今天在SD2大会上,听了李建忠老师讲的《.NET框架中的几个典型设计模式》课程收益非浅,李建忠老师的课总能给人醍醐灌顶的感觉,去年的《WPF内核机制》让我们可以从根本上理解WPF的革命。今年的设计模式,也是从根本上理解设计模式产生的原因,适用的场景。 下面是我对课程整理的一些笔记和心得,跟大家分享: 软件的需求一直在变化。很变态,但是很多人都原创 2008-12-05 22:47:00 · 3833 阅读 · 2 评论 -
多线程Singleton单件模式
Singleton模式是最简单的模式,比较汗颜的是自己一直以来使用的是单线程的Singleton模式,最近在听了李建忠老师的模式讲座录像后,才发现自己一直没注意到这点。这个录像讲座在后面给出了链接地址: C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式) 下面内容整理自李建忠老师的讲课内容: 单线程的Singleton模式 public class Single原创 2009-04-13 10:55:00 · 2804 阅读 · 1 评论 -
MemberwiseClone与Clone
MemberwiseClone 方法创建一个浅表副本,具体来说就是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。如果字段是值类型的,则对该字段执行逐位复制。如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。 下面的代码就是演示这个问题: using System;using System.IO;using System.Runtime.S原创 2009-04-29 16:56:00 · 2591 阅读 · 1 评论 -
多线程与SqlConnection.Close
我做的一个Windows Form 程序碰到一个很怪异的多线程情况,最后检查进去竟然是部分代码的数据库链接没有关闭导致的。 我的这个程序是多线程程序,每个线程不间断的从数据库中取得数据,然后对取出的数据进行处理,一直循环到没有需要处理的数据为至。每个线程的循环是上万次的,即,每个线程上万次的数据库链接打开操作。 这个程序碰到怪异的现象是: 在A服务器上,没有任何问题,在B服务器上程序开一个线原创 2009-06-03 13:38:00 · 4204 阅读 · 3 评论 -
C#3.0 中 DLINQ 从数据库获得数据集,XLINQ从XML文件获得数据集的方法
DLINQ和XLINQ的具体查询,更新等操作不是本文讨论重点,本文重点解决如何获取需要查询的数据集。 DLINQ 如何链接到数据库?DLINQ可以访问DataSet,这种情况我们在本文就不考虑了,本文考虑的是直接用DLINQ访问数据库,我们如果用VS Orcas中的LINQ到SQL的新ORM设计器,VS替我们产生了一些代码,这种情况也不是本文考虑的范围。本文我们要考虑的事情原创 2007-06-12 13:35:00 · 2492 阅读 · 0 评论 -
C# 3.0 的Lambda表达式(Lambda Expressions)
Lambda 表达式(拉姆达表达式) 和 匿名方法 其实是一件事情。唯一的不同是:他们语法表现形式不同。Lambda 表达式是在语法方面的更进一步的进化。在本质上,他们是一件事情。他们的作用都是:产生方法。即:内联方法。引用自 C#首席架构师Anders Hejlsberg 的原话:http://www.ondotnet.com/pub/a/dotnet/2005/10/31/interv原创 2007-06-12 10:15:00 · 6620 阅读 · 0 评论 -
C#3.0 LINQ 查询语法
首先来看一个很简单的LINQ查询例子,查询一个int 数组中小于5的数字,并按照大小顺序排列:class Program{ static void Main(string[] args) { int[] arr = new int[] { 8, 5, 89, 3, 56, 4, 1, 58 }; var m = from n in arr wher原创 2007-06-07 17:18:00 · 3454 阅读 · 0 评论 -
LINQ 的查询执行何时是延迟执行,何时是立即执行,以及查询的复用
延迟执行的经典例子:我们用 select ++i 就可以看到在foreach 时候,查询才被执行。public static void Linq99(){ int[] numbers = new int[] { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; int i = 0; var q = from n in numbers select ++i;原创 2007-07-03 16:22:00 · 7481 阅读 · 3 评论 -
Orcas Team Suite 2007年6月份CTP的下载链接
你访问以下地址就可以下载Orcas Team Suite 2007年6月份CTP:http://download.microsoft.com/download/f/2/a/f2ac411f-acf9-42a7-a84f-3efc409bcd6b/VSTS_VPCJuneCTP.mht这个版本可是比 Orcas Beta 1 更新的版本。原创 2007-07-12 17:25:00 · 1863 阅读 · 0 评论 -
使用Grid来对WPF页面进行布局排版
对于以前用 Windows Form 来开发客户端程序的程序员,在使用 WPF 开发客户端的程序时,在窗体布局上将是他必须面对的一个坎。 布局产生困惑的一个典型场景如下: 我们在开发WPF窗体时候,我们会发现,当我们把菜单控件(Menu)、工具条(ToolBar、ToolBarPanel)、状态条(StatusBar)这些最常见的页面元素拖动到WPF窗原创 2007-08-17 13:46:00 · 8869 阅读 · 0 评论 -
C#3.0 中 隐式类型变量、匿名类型
隐式类型变量 (Implicitly typed local variables) 象下面的代码书写就是隐式类型变量 var i = 5;var str = “Csharp”var numbers = new int[]{1,2,3};var orders = new System.Collections.Hashtable();var orders1 = new Dictionar原创 2007-05-23 14:09:00 · 3255 阅读 · 1 评论 -
在查询语句中使用 NOLOCK 和 READPAST
今天早上我在处理一个数据库死锁的异常时候,怡红公子给我的其中一个建议就是使用 NOLOCK 或者 READPAST 。我在使用后特整理有关 NOLOCK 和 READPAST的一些技术知识点到本篇博客:对于非银行等严格要求事务的行业,搜索记录中出现或者不出现某条记录,都是在可容忍范围内,所以碰到死锁,应该首先考虑,我们业务逻辑是否能容忍出现或者不出现某些记录,而不是寻求对双方都加锁条件下如何解原创 2007-05-31 13:15:00 · 4403 阅读 · 0 评论 -
C#3.0 中的扩展方法 (Extension Methods)
今天早上在MSDN站点看到这样一篇文章: C# 3.0 LINQ 的演变及其对 C# 设计的影响 。 从这篇文章我们就可以明显的看到,C# 3.0 所新增的这些特性,可以认为都是为了LINQ 的发展,为了LINQ更易用,所创建的一些新特性,当然这些新特性也可以被非LINQ相关功能所使用。LINQ的发展,带动了C#3.0 这一系列新特性的产生。 回来说我们的话题,扩展方法,首先看一个最简单的原创 2007-06-06 11:26:00 · 4127 阅读 · 0 评论 -
C#3.0 中对象初始化器(Object Initializers)和集合初始化器(Collection Initializers)
C# 3.0 中对象初始化器(Object Initializers) 和 集合初始化器(Collection Initializers) ,就是简化我们的代码,让本来几行才能写完的代码一行写完。这样在LINQ的使用中,我们才不会把一个LINQ表达式写的巨复杂无比。 由于我看到几篇讲 对象初始化器(Object Initializers)和集合初始化器(Collection Init原创 2007-06-06 16:34:00 · 2548 阅读 · 0 评论 -
C#3.0 中使用扩展方法来扩展接口
有关扩展方法的一些知识点请参看我的前篇博客:C#3.0 中的扩展方法 (Extension Methods)前篇博客中我重点介绍了两个特殊场景:1、扩展方法跟原来类的方法重名时候的处理逻辑2、扩展方法的嵌套现在我们来看扩展方法使用的第三个场景:使用扩展方法来扩展接口 应用场景举例:我们有时候会发现最初定义的一个接口,在现在环境下,这个接口需要再增加一个函数。有了扩展方法原创 2007-06-06 14:31:00 · 7718 阅读 · 1 评论 -
C# 3.0 的自动属性(Automatic Properties)
使用自动属性后,你可以不用手工声明一个私有成员变量以及编写get/set逻辑,取而代之的是,编译器会自动为你生成一个私有变量和默认的get/set 操作。系统为你产生的私有变量在IDE中,你是看不到的,如下图:当然如果你希望属性中有些赋值或者取值逻辑校验,自动属性可是不适合你的。 上面的代码我们编译后,再用 Reflector 反编译后,我们可以看到上述代码中的属性变成了如下代码:原创 2007-06-05 13:34:00 · 2706 阅读 · 0 评论 -
WPF中展开一个TreeView控件的所有树节点
在 Windows Form 应用中,我们碰到需要展开一个TreeView 控件的所有树节点的时候很简单,微软已经替我们提供了ExpandAll 方法,我们只要简单的一行代码tv_QTree.ExpandAll();就可以了。即 System.Windows.Forms 命名空间的 TreeView.ExpandAll 方法 。 在WPF中,我们会发现,System.原创 2007-09-05 16:34:00 · 7674 阅读 · 1 评论 -
Silverlight学习笔记--绘制与着色(上)
最近通过看WebCase的录像来学习Silverlight,为了避免学了后面忘了前面,把录像中的重点整理成笔记记录下来。 通过录像来学习Silverlight,我推荐看苏鹏讲的Silverlight探秘系列课程,这个系列课程已经讲到50多讲了。由浅入深,而且连绵不断,确实很有帮助。 这篇博客是对 苏鹏讲解的“Silverlight探秘系列课程(3):绘制与着色”的笔记,网上有很多地方都有原创 2009-11-24 17:24:00 · 1996 阅读 · 1 评论