随笔分类 -  C#

摘要:对文件和目录进行解压缩是一个非常常见的操作,在.NET Framework中为我们提供了:GZipStream类来对文件进行解压缩操作。此类表示 GZip 数据格式,它使用无损压缩和解压缩文件的行业标准算法。GZip 数据格式使用的算法与 DeflateStream 类的算法相同,但它可以扩展以使用其他压缩格式。 阅读全文
posted @ 2012-08-31 14:09 gyzhao 阅读(849) 评论(0) 推荐(0) 编辑
摘要:我们在对文件进行读写操作时首先需要把文件转换成文件流(FileStream)对象。Stream类及其派生类(包括FileStream类)都提供了Read和Write方法,可支持在字节级别对数据进行读写。假如我们的程序需要将字符数据写入到流中,需要先将字符数据转换为字节数据之后才能将数据写入到流中。所以.NET为我们提供了一下更方便的支持对流进行读写的类:Bina...... 阅读全文
posted @ 2012-08-30 14:17 gyzhao 阅读(2046) 评论(0) 推荐(0) 编辑
摘要:在.NET Framework中System.IO 命名空间包含允许对数据流和文件进行同步和异步读取及写入的类型。在.NET开发中的对文件进行I/O操作的类都位于该命名空间中。从.NET Framework 4.0开始,增加一系列方法来枚举目录和文件,这些方法返回一个目录和文件的字符串的可枚举集合...... 阅读全文
posted @ 2012-08-28 15:03 gyzhao 阅读(954) 评论(0) 推荐(2) 编辑
摘要:什么是装箱和拆箱 装箱是将值类型转换为引用类型或者是值类型(如:结构)实现任一接口类型的过程。当 CLR 对值类型进行装箱时,会将该值包装到 System.Object 内部,再将后者存储在托管堆上。拆箱就是将从对象中提取值类型或者接口类型到实现该接口的值类型的显式转换。装箱时隐性的,拆箱是显式的。装箱 装箱是值类型到引用类型或者这个值类型所实现的任何接口类型的隐式转换。对值类型装箱会在堆中分配一个对象实例,并将该值复制到新的对象中。 下面代码在做装箱操作:在堆栈上创建对象引用obj,而在堆上则引用int类型的值。该值是赋给变量i的值类型值的一个副本。1 int ... 阅读全文
posted @ 2012-08-23 21:34 gyzhao 阅读(5154) 评论(0) 推荐(2) 编辑
摘要:1.通过控制台调用C#编译器 通过控制台直接调用C#编译器方便我们编写片段代码时不使用Visual Studio也能够对源码进行编译。在通过使用控台命令行调用C#编译器时,我们需要预先设置好操作系统的环境变量, 在Path变量中添加:;C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319。在这里我选择的是C# 4.0的编译器。现在在E:\CSharp目录存放了两个C#的源文件,我们分别将它们编译成DLL文件和可执行程序(exe):1.1 通过命令行编译成可执行程序(csc fileName.cs)我们看到目录里面现在多了一个可执行文件:1.2 通过命令行. 阅读全文
posted @ 2012-08-23 14:06 gyzhao 阅读(4433) 评论(2) 推荐(0) 编辑
摘要:ToString()方法作为.NET环境中最常用的方法之一,我们应该为类型的所有者提供一个合理的ToString()版本,类型的字符串表示可用来在不同的环境下向用户轻松显示对象的相关信息;此外,类型的字符串表示还可以拥有调试环境。因此,我们创建的每一个类型都应该能覆写... 阅读全文
posted @ 2012-08-22 21:59 gyzhao 阅读(951) 评论(0) 推荐(2) 编辑
摘要:#if/#endif 语句常用来基于同一份源码生成不同的编译结果,其中最常见的就是debug版和release版。但是这些工具在实际应用中并不是非常友好,因为它们容易被滥用,其代码页进而难以理解或调试。C#设计中考虑到这个问题,并提供了更好的工具——Conditional特性... 阅读全文
posted @ 2012-08-21 22:25 gyzhao 阅读(2034) 评论(0) 推荐(2) 编辑
摘要:因为相对于强制类型转换来说,as更安全,也更加高效。as和is操作符都不会执行任何用户自定义的转换,它们仅当运行时类型符合目标类型时才能转换成功,也不会在转换时创建新的对象... 阅读全文
posted @ 2012-08-21 15:23 gyzhao 阅读(811) 评论(0) 推荐(1) 编辑
摘要:C#语言中有两种类型的常量:编译期常量和运行时常量。应该尽量使用运行时常量,而不是编译期常量。虽然编译期常量略快一些,但是没有运行时常量那么灵活。应仅仅在那些性能异常敏感,且常量的值在各个版本之间绝对不会变化时,才使用编译器常量... 阅读全文
posted @ 2012-08-21 12:43 gyzhao 阅读(848) 评论(0) 推荐(2) 编辑
摘要:属性允许将数据成员作为公共接口的一部分暴露出去,同时仍旧提供面向对象环境下所需要的封装。属性这个语言元素可以让你像访问数据成员一样使用,但底层依旧使用方法实现。通过使用属性我们可以创建出类似于数据访问(客户代码在访问属性时,就像是在访问共有的字段),但实际上确是方法调用的接口... 阅读全文
posted @ 2012-08-20 22:23 gyzhao 阅读(1126) 评论(2) 推荐(4) 编辑
摘要:我们可以在内存中创建DataTable对象,同样也可以对它们进行进一步的各种操作,下面的示例程序中,让我们来学习如何对它们进行基本的增删改的操作。作为示例程序的第一步我们应该是先创建一个Windows Forms的项目,然后定义一个存储...... 阅读全文
posted @ 2012-08-10 21:33 gyzhao 阅读(1659) 评论(3) 推荐(1) 编辑
摘要:一般情况下都是使用代码来创建数据源连接,但是在VS中也提供了一个可选的便捷方式——"数据源连接向导",通过可视化的方式来引导用户创建数据集。下面的操作展示了如何使用这..... 阅读全文
posted @ 2012-08-05 19:54 gyzhao 阅读(6697) 评论(1) 推荐(1) 编辑
摘要:由于工作的需要经常会需要直接对十六进制的报文进行处理,有很多直接对位的操作,再此做一个记录,方便日后查阅。问题一:如何获取一个字节的后几位? 通过使用&操作符来获取,假如一个byte buf=0x16;(二进制为:00010110),当我们想获取它的后四位只需要这样:0x16&0xF(二进制为:1111)就可以取出后四位了。问题二:如何获取一个字节的前几位? 通过>>移位操作符来实现,和前面一样,我们想获取0x16的前四位(8-n)时只需要这样:0x16>>4,前三位这样取0x16>>(8-3)。.NET 位,字节相关常用类库BitConve 阅读全文
posted @ 2012-06-30 22:27 gyzhao 阅读(630) 评论(0) 推荐(0) 编辑
摘要:因为项目中需要对第三方的站点进行跨域请求,原来常用的Jquery的Ajax方法不能够实现跨域请求。在网上查找了一下资料,解决跨域请求的方式有不少,但是还需要根据自己的具体情况来做出不同的选择。在项目中我使用的是直接通过C#后台发送请求来实现跨域访问(后台消耗会增大),下面是请求的源码: 1 string URL = "www.xxx.com"; 2 public void sendPost(string urlArgs,HttpContext context) 3 { 4 //context.Request["args"] 5 System.N... 阅读全文
posted @ 2012-05-16 09:51 gyzhao 阅读(18684) 评论(0) 推荐(1) 编辑
摘要:ADO.NET 是一组向 .NET Framework 程序员公开数据访问服务的类。在 System.Data.dll 程序集中,并与 System.Xml.dll 中的 XML 类集成。ADO.NET 是在 .NET Framework 中提供最直接的数据访问方法。为ADO.NET Entity Framework和LINQ to SQL等基于数据访问的技术提供了底层的技术支撑。ADO.NET可以...... 阅读全文
posted @ 2012-03-31 16:07 gyzhao 阅读(1168) 评论(0) 推荐(2) 编辑