随笔分类 - [C#]
摘要:引言有那么几天没更新博客了,发现到了不得不写的地步,总是有那么个声音在强迫自己,虽然工作很累,但是有些东西不写出来,不能原谅自己。今天为什么总结这两个关键字的区别,总觉得这两个关键字的用法用的太习惯了,没想过为什么这么用,就好比为什么一直用右手拿筷子,这么习惯。为什么我要用右手拿筷子,为什么不用左手...
阅读全文
摘要:引言可以说DataTable存放数据的一个离线数据库,将数据一下加载到内存,而DataReader是在线查询,而且只进形式的查询,如果后退一步,就不可能了,DataTable操作非常方便,但也有缺点,数据量非常大的时候,一下加载到内存,可想而知会有多么的卡了。这里只是说明DataTable的sele...
阅读全文
摘要:引言在翻看之前总结的常见面试题中,关于try...catch异常处理的还是蛮多了,今天看到这个面试题,也就重新学习一下。try..catch语法try-catch语句由一个try块后跟一个或多个catch子句构成,这些子句制定不同的异常处理程序。引发异常时,公共语言运行时(CLR)会查找处理此异常的...
阅读全文
摘要:引言最近翻看了之前的学习笔记,看到foreach,记得当时老师讲的时候,有点犯浑,不是很明白,这好比,上小学时,你不会乘法口诀,但是随着时间的增长,你不自觉的都会了,也悟出个小道理,有些东西,你当时不太懂,但随着你的阅历和经验的增长,有那么一天你会恍然大悟,哦,原来是这样。自定义集合类提到foreach就不得不说集合,那么就先从自定义的集合开始吧。 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks
阅读全文
摘要:Main函数是程序的入口点,它是入口点,那它的参数,又是怎样来的呢?首先写个简单的测试程序看看args到底是什么?1 class Program2 {3 static void Main(string[] args)4 {5 Console.WriteLine("args数组的长度为:"+args.Length);6 Console.Read();7 }8 }结果 可见,一个新的项目中args数组是空数组,那既然是空的有没有办法给它初始化呢?现在,怎么样来将参数传入,达到我们的目的...
阅读全文
摘要:相关文章 [C#]Attribute特性[C#]Attribute特性(2)——方法的特性及特性参数AttributeUsage特性除了可以定制自己的特性来注释常用的C#类型外,您可以用AttributeUsage特性来定义您想怎样使用这些特性。AttributeUsage特性采用如下的调用惯例:1 [AttributeUsage(2 3 Validon,4 5 AllowMultiple=allowmultiple,6 7 Inherited=inherited8 9 )] 您可以非常容易地区别出哪些是定位参数,哪些是命名参数。强烈建议您在记录您的特性时采用这种格式,以便不必通过查看特性类的
阅读全文
摘要:上篇博文[C#]Attribute特性介绍了特性的定义,类的特性,字段的特性,这篇博文将介绍方法的特性及特性参数相关概念。3.方法的特性 之所以将这部分单列出来进行讨论,是因为对方法的特性查询的反射代码不同于对类的特性查询的反射代码。在这个例子里,我们将使用一个特性用来定义一种可进行事务处理的方法。1 public class TransactionableAttribute : Attribute2 {3 public TransactionableAttribute() { }4 } 1 public class TestClass 2 { 3 ...
阅读全文
摘要:简介 特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集、类型、方法、属性等)相关联。特性与程序实体关联后,即可在运行时使用名为“反射”的技术查询特性。特性具有以下属性:特性可向程序中添加元数据。元数据是有关在程序中定义的类型的信息。所有的 .NET 程序集都包含指定的一组元数据,这些元数据描述在程序集中定义的类型和类型成员。可以添加自定义特性,以指定所需的任何附加信息。可以将一个或多个特性应用到整个程序集、模块或较小的程序元素(如类和属性)。特性可以与方法和属性相同的方式接受参数。程序可以使用反射检查自己的元数据或其他程序内的元数据。 (以上来自MSDN)特性的定义首先看一个例子,
阅读全文
摘要:密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。(以上来自百度)c#aes算法实现的辅助类 1 public static class AesSecret 2 { 3 ...
阅读全文
摘要:在C#中通过使用方法来获取返回值时,通常只能得到一个返回值。因此,当一个方法需要返回多个值的时候,就需要用到ref和out,那么这两个方法区别在哪儿呢?MSDN: ref关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用ref参数,则方法定义和调用方法都必须显式使用ref关键字。 out关键字会导致参数通过引用来传递。这与ref关键字类似,不同之处在于ref要求变量必须在传递之前进行初始化。若要使用out参数,方法定义和调用方法都必须显式使用out关键字。案例: 定义一个方法,求一个整数数组中的最大值,最小值,和,平均数。如果.
阅读全文
摘要:上篇文章主要介绍了程序集的内容:程序集和反射(一),时隔这么久,今天终于腾出点时间,把反射部分的知识点给整理一下,不把这个写完,心里总觉得有点堵。对于反射,我相信很多人跟LZ一个德行,不会,所以不用,不用,所以永远不会。 通过System.Reflection命名空间中的类已经System.Type,您可以获取有关已加载的程序集和在其中定义的类型(如类、接口、值类型)的信息。您也可以使用反射在运行时创建类型实例,以及调用和访问这些实例。 程序集包含模块,而模块包含类型,类型又包含成员。 反射则提供了封装程序集、模块和类型的对象。 您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现
阅读全文
摘要:FileStream缓冲读取和写入可以提高性能。FileStream读取文件的时候,是先讲流放入内存,经Flash()方法后将内存中(缓冲中)的数据写入文件。如果文件非常大,势必消耗性能。特封装在FileHelper中以备不时之需。参考文章:http://www.cnblogs.com/yangxiaohu1/archive/2008/06/20/1226949.html将该文章中提供的代码少做修改,原文中进行了强制类型转换,如果文件很大,比如4G,就会出现溢出的情况,复制的结果字节丢失严重,导致复制文件和源文件大小不一样。这里修改的代码如下: 1 public static class ..
阅读全文
摘要:简单写了一个错误日志记录辅助类,记录在此。 Loghelper类 1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7 8 namespace LogHelper 9 {10 public static class LogHelper11 {12 //拼接日志目录13 static string appLog...
阅读全文
摘要:DataContractSerializer 类使用提供的数据协定,将类型实例序列化和反序列化为 XML 流或文档。无法继承此类。命名空间:System.Runtime.Serialization程序集:System.Runtime.Serialization(在 System.Runtime.Serialization.dll 中)备注 使用 DataContractSerializer 类可以将类型实例序列化和反序列化为 XML 流或文档。 通过将 DataContractAttribute 特性应用于类,而将DataMemberAttribute 特性应用于类成员,可以指定要序列化的属性
阅读全文
摘要:JavaScriptSerializer 类为启用 AJAX 的应用程序提供序列化和反序列化功能。命名空间:System.Web.Script.Serialization程序集:System.Web.Extensions(在 System.Web.Extensions.dll 中)JavaScriptSerializer类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据。您无法访问序列化程序的此实例。但是,此类公开了公共 API。因此,当您希望在托管代码中使用 JavaScript 对象符号 (JSON) 时可以使用此类。若要序列化对象,请使用Serializ
阅读全文
摘要:什么是委托?之前写了事件和委托的区别:http://www.cnblogs.com/wolf-sun/p/3293146.html这里也把委托相关知识也总结一下。委托是c#中类型安全的,可以订阅一个或多个具有相同签名方法的函数指针声明委托的方式:delegate 返回值类型 委托类型名(参数)比如:delegate void StringProcess(string s);注意:这里的除了前面的delegate,剩下部分和声明一个函数一样,但是StringProcess不是函数名,而是委托类型名声明的委托是一种类型,就像int、Person一样,如果要用的话还要声明委托类型的变量,声明委托类型
阅读全文
摘要:事件 语法 访问修饰符 event 委托名称 事件名称; 定义事件: public delegate void delTest(); public event delTest eventTest; 注册事件(可以给一个事件注册多个方法) eventTest += new delTest(method1); eventTest += new delTest(method2);自定义事件的基础 1.当一个结果发生时,有可能引起另外的一些反应。这就好像因果关系。而事件,则是这个因与果的内部联系。 2.在C#中,我们经常看到:1 private void button1_Click(object ..
阅读全文
摘要:1个字节等于8位二进制 。。。。1byte=8bit1K = 1024 byte =1024byte*8b说白一点就是1M等于1024个K组成,而1K又等于1024B,所以1M等于1024K乘以1024B=(1,048,576)B/字节1M=1,048,576Byte1M=1024K=1024K x 1024B=1,048,576Byte1个字节(byte)由8个比特(bit)组成,每个比特就是一个二进制数(0或1)。所以说,“一个字节是以8位二进制数或8比特组成的。”就是说1个字节(byte)有8个位(bit)8位2进制数就是,如下的一些情况000000000010110024个字母相对应的
阅读全文
摘要:项目中常用正则表达式收集整理:匹配中文字符的正则表达式: [\u4e00-\u9fa5]匹配双字节字符(包括汉字在内):[^\x00-\xff] 可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)匹配空白行的正则表达式:\n\s*\r 可以用来删除空白行匹配HTML标记的正则表达...
阅读全文
摘要:可扩展的标记语言(eXtensible Markup Language)优点:容易读懂;格式标准任何语言都内置了XML分析引擎,不用单独进行文件分析引擎的编写。用普通二进制传输数据的缺点,解析方式各异XML语法规范:标签(Tag)、嵌套(Nest)、属性。标签要闭合,属性值要用""包围,标签可以互相...
阅读全文