一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Programming Language

C# 知识点 goto【学习笔记】

 定义

备注

可以考虑使用goto的情形 

不加限制地使用goto带来的弊端

示例 goto 在 switch 语句中的使用。

示例输出

使用 goto 跳出嵌套循环

龙生   24 Sep 2012
View Details

C#的Escape和Unescape

基于C#的Escape和Unescape实现 //在C#后台实现JavaScript的函数escape()的字符串转换//些方法支持汉字private string escape(string s){StringBuilder sb = new StringBuilder();byte[] byteArr = System.Text.Encoding.Unicode.GetBytes(s); for (int i = 0; i < byteArr.Length; i += 2){ sb.Append("%u");sb.Append(byteArr[i + 1].ToString("X2"));//把字节转换为十六进制的字符串表现形式 sb.Append(byteArr[i].ToString("X2"));}return sb.ToString(); }//把JavaScript的escape()转换过去的字符串解释回来//些方法支持汉字private string unescape(string s){ string str = s.Remove(0, 2);//删除最前面两个"%u"string[] strArr = str.Split(new string[]{"%u"}, StringSplitOptions.None);//以子字符串"%u"分隔byte[] byteArr = new byte[strArr.Length * 2];for (int i = 0,j=0; i < strArr.Length;i++,j+=2){byteArr[j + 1] = Convert.ToByte(strArr[i].Substring(0,2), 16); //把十六进制形式的字串符串转换为二进制字节byteArr[j ] = Convert.ToByte(strArr[i].Substring(2, 2), 16);}str = System.Text.Encoding.Unicode.GetString(byteArr); //把字节转为unicode编码return str; }   下面的为不支持汉字的转换: public static string Escape(string str){if (str == null)returnString.Empty; StringBuilder sb = newStringBuilder();int len = str.Length; for […]

龙生   21 Sep 2012
View Details

如何在ashx页面获取Session值

在一般事务处理页面,可以轻松的得到 Request,Response对象,从而进行相应的操作,如下: HttpRequest Request = context.Request; HttpResponse Response = context.Response; 但是要得到 Session的值就没有那么简单了。比如你要在ashx得到保存在Session中的登录帐号Session["userAccount"] 如果你只是context.Session["userAccount"]的话是会报 “未将对象引用设置到对象的实例”的异常 所以,如果要想取Session中的值 ,需要如下所示 1、引入 命名空间: using System.Web.SessionState; 2、实现IRequiresSessionState接口,具体如下 /// <summary>/// $codebehindclassname$ 的摘要说明/// </summary>[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]public class AddUserInfo : IHttpHandler,IRequiresSessionState //就是这样显示的实现一下,不用实现什么方法{ public void ProcessRequest(HttpContext context){       //…       //这样你就可以如下 操作了 if(context.Session["userAccount"] != null)       {         string account = context.Session["userAccount"].ToString();       }       //…继续下面的代码     }   }   FROM URL:http://www.cnblogs.com/vihone/archive/2010/06/04/1751490.html

龙生   18 Sep 2012
View Details

SWFUpload V2.2.0 说明文档

SWFUpload V2.2.0 说明文档 更新时间:2008-11-07 TOC SWFUpload SWFUpload 2 概述 入门 SWFUpload JavaScript 对象 构造器 全局变量和常量 instances movieCount QUEUE_ERROR UPLOAD_ERROR FILE_STATUS Default Event Handlers BUTTON_ACTION(added in v2.2.0) BUTTON_CURSOR(added in v2.2.0) BUTTON_WINDOW_MODE(added in v2.2.0) 属性 customSettings movieName 方法 addSetting (不推荐使用) getSetting (不推荐使用) retrieveSetting (v2.1.0中已删除) destroy (v2.1.0中新增) displayDebugInfo selectFile (不推荐使用) selectFiles (不推荐使用) startUpload cancelUpload stopUpload getStats setStats getFile addPostParam removePostParam addFileParam removeFileParam setUploadURL setPostParams setFileTypes setFileSizeLimit setFileUploadLimit setFileQueueLimit setFilePostName setUseQueryString setDebugEnabled setButtonImageURL (added in v2.2.0) setButtonDimensions (added in v2.2.0) setButtonText (added in v2.2.0) setButtonTextStyle (added in v2.2.0) setButtonTextPadding (added in v2.2.0) […]

龙生   12 Sep 2012
View Details

swfupload在IE9中不显示上传按钮的问题

问题描述: 使用swfupload.js上传文件,在IE8、火狐、谷歌浏览器中显示正常,但是在IE9下不能显示上传按钮。 解决方法: 打开swfupload.js文件找到307行开始的如下代码: // Private: getFlashHTML generates the object tag needed to embed the flash in to the document SWFUpload.prototype.getFlashHTML = function (flashVersion) { // Flash Satay object syntax: http://www.alistapart.com/articles/flashsatay return ['<object id="',this.movieName, '" type="application/x-shockwave-flash" data="', (this.support.imageResize ?this.settings.flash_url : this.settings.flash9_url), '" width="', this.settings.button_width, '" height="',this.settings.button_height, '" class="swfupload">', '<param name="wmode" value="',this.settings.button_window_mode, '" />', '<param name="movie" value="', (this.support.imageResize ?this.settings.flash_url : this.settings.flash9_url), '" />', '<param name="quality" value="high" />', '<param name="allowScriptAccess" value="always" />', '<param name="flashvars" value="' +this.getFlashVars() + '" />', '</object>'].join(""); }; 将其替换为:   // Private: getFlashHTML generates the object tag […]

龙生   12 Sep 2012
View Details

贴一下聚合函数在LinQ to Object和LinQ to DataSet中的用法

     var member = new Member();             int recordCount;             var memberInfos = member.Paging(20, 1, "MemberId DESC", "", out recordCount);             var memberIdSum = memberInfos.Sum(c => c.MemberId);             Response.Write(memberIdSum.ToString());             Response.Write("<br/>——————————————————-<br />");               var dbHelper = DbFactory.AccessSqlServer;             var dbPaging = DBPaging.Create(dbHelper);             var ds = […]

龙生   11 Sep 2012
View Details

LINQ TO DataSet Overview

 相对而言,LINQ TO DataSet是LINQ技术中最小的一块,虽然是DB中抽取出来的一个离线的操作模型,但毕竟对象也是个内存里面的object而已。所以和LINQ TO Object相比,大多数的操作都是一样的,不同只是要根据DataSet,DataTable的结构标明字段而已。下面简单的列出LINQ TO DataSet相比LINQ TO Object一些要注意的特色。   Query UnTyped DataSet   和一般的LINQ相比,query对象是untyped DataSet的时候,使用Field<T>和SetField<T>来读写不同的column字段,下面是一个简单的例子:   DataTable orders = ds.Tables["Orders"]; DataTable orderDetails = ds.Tables["OrderDetails"];   var query =     from    o in orders.AsEnumerable()     where   o.Field<DateTime>( "OrderDate" ).Year >= 1998     orderby o.Field<DateTime>( "OrderDate" ) descending     select  o;   在这里大致要注意三点 1.因为untyped DataSet没有实现IEnumerable<T> 和 IQueryable<T>的interface,所以如果想把它作为一个可以查询的对象的话,要先用AsEnumerable() 或者AsQueryable()转换一下,将它转换成IEnumerable<T>或者IQueryable<T>对象才能用LINQ去查询。如:from o in orders.AsEnumerable()   2.一般是使用使用Field<T>(“Column A”)和SetField<T>(“Column A”)来读写不同的column字段对应的element,用它来访问相对于以前我们用ds.Tables["Orders"].Row[“RowA”][ “Column A”]的访问模式比起来,一个很大的好处就是可以避免null类型产生的exception。我们以前从DataSet里面取数据的时候,如果取的出来的是null,就会抛出exception,所以我们经常作类似if(ds.Tables["Orders"].Row[“RowA”][ “Column A”]!=null)的判断来包装我们进一步的逻辑处理,但是用Field<T>(“Column A”)就可以避免这种麻烦。因为Field<T>(“Column A”)是nullable的。这个特性的由来是<T>这个泛型的使用,比如你取int类型数据的时候,如果你觉得它可能是null,那你就可以用Field<int?>(“Column A”)去取,这样就可以避免了exception的抛出。   3 .Field<T>和SetField<T>是使用并不局限在LINQ 的query当中,在程序的其他地方也能使用,可以用它去替代以前的我们访问DataSet的方式,例如:  

    Query Typed DataSet   这就更加简单了。对于定义了类型的DataSet,我们可以象查询内存中一般的object那样去查询它。例如:  

  还有一个与untyped DataSet不同的地方是在查询它的时候不需要使用AsEnumerable() 或者AsQueryable()那样的转换方法了。因为所有定义好的DataSet都是继承了TypedTableBase<T>这个基类,而这个基类已经实现了IEnumerable<T>的interface     Query DataSet中的relation   DataSet当中有时候也是有relation的,和DB一样,例如在下面的DataSet中加入relation:  

  如果我们想像在LINQ […]

龙生   11 Sep 2012
View Details

Linq to DataSet

1.数据集( DataSet )   • DataSet 是更为广泛使用的ADO.NET 组件之一,它可以显式缓存不同数据源中的数据。   • 在表示层上DataSet 与GUI 控件紧密集成,以进行数据绑定。   • 在中间层上,它提供保留数据关系形状的缓存并包括快速简单查询和层次结构导航服务,从而可以减少对数据库的请求数。 2.查询数据集   • DataSet 虽然具有突出的优点,但其查询功能也存在限制。   • Select  方法可用于筛选和排序,GetChildRows和GetParentRow 方法可用于层次结构导航。   • 但对于更复杂的情况,开发人员必须编写自定义查询。这会使应用程序性能低下并且难以维护。 3.使用LINQ to DataSet   • 使用LINQ to DataSet 可以更快更容易地查询在DataSet 对象中缓存的数据。   • 这些查询用编程语言本身表示,而不表示为嵌入在应用程序代码中的字符串。   • LINQ to DataSet 可使Visual Studio 开发人员的工作效率更高,     因为Visual Studio IDE 提供编译时语法检查、静态类型化和对 LINQ  的智能感知的支持。   • LINQ to DataSet 也可用于查询从一个或多个数据源合并的数据 这可以使许多需要灵活表示和处理数据的方案能够实现。 4.查询数据集    • 填充DataSet     – XxxDataAdapter     – LINQ to SQL    •主要使用下面两个扩展类     – DataRowExtensions     – DataTableExtensions   • 查询支持     – 类型化数据集     – 非类型化数据集 5.启用LINQ to DataSet 功能    • 要求.NET Framework 3.5   • 引用System Data DataSetExtensions 程序集 […]

龙生   11 Sep 2012
View Details

LinQ&EF任我行(一)--LinQ to SQL (转)

LinQ家族五大成员:LinQ to Objects – 默认功能,用来实现对内存中集合对象的查询LinQ to SQL – 针对SQL Server的查询,它是一个带有可视化的操作界面的ORM工具LinQ to DataSet – 对强类型化或弱类型化的DataSet或独立的DataTable进行查询LinQ to Entity – 对实体框架中EDM定义的实体集合进行查询。LinQ to XML – 对XML文档进行查询创建等操作。 C#语法与LinQ相关的新增功能 1.隐式强类型变量在C#3.0中可以使用var关键字隐式定义强类型局部变量。 《图1》这里的var关键字定义变量与JavaScript定义变量看起来很像但二者有着本质的区别。JavaScript定义的变量是弱类型的变量,也可理解为是一种通用类型的变量,它可以容纳各种类型的值,还可以在运行过程中动态修改其中的内容类型。下面这种写法在JavaScript中是正确的:var obj = 3.14;obj = "hello world";C#中的var则是种强类型的变量,它在定义的时候会确定数据类型,分配内存空间。上面这两名代码在C#3.0中会报错,因为第一句已经把obj定义为double型的变量,第二句把字符串赋值给double是错误的操作。 隐式强类型并不能有效简化我的书写的代码,但当我们在用它来动态接收一些未知类型的数据的时候就显虽得很强大。在隐式强类型变量出现前,我们一般是使用object型变量来接收这种未知类型的数据的。 2.对象初始化这个功能可以有效简化类的getter和setter部份的代码,还可以只使用一行表达式语句实现对象的实例化与初始化操作。如定义实例类时可以使用如下代码,没有必要再把成员变量和属性分别定义了。public class LineItem{    public int OrderID { get; set; }    public int ProductID { get; set; }    public short Quantity { get; set; }    public string QuantityPerUnit { get; set; }    public decimal UnitPrice { get; set; }    public float Discount { get; set; }} 实例化LineItem对象,并为它赋值var line3 = new LineItem { OrderID = 11000, ProductID = 61, Quantity = […]

龙生   11 Sep 2012
View Details

yield(C# 参考)

  yield 关键字向编译器指示它所在的方法是迭代器块。 编译器生成一个类来实现迭代器块中表示的行为。 在迭代器块中,yield 关键字与 return 关键字结合使用,向枚举器对象提供值。 这是一个返回值,例如,在 foreach 语句的每一次循环中返回的值。 yield 关键字也可与 break 结合使用,表示迭代结束。 有关迭代器的更多信息,请参见迭代器(C# 编程指南)。 下面的示例演示两种形式的 yield 语句。 示例:

龙生   08 Aug 2012
View Details
1 161 162 163 175