随笔分类 -  C#

C#: ? ?? => {}
摘要:1. ? – Nullable1[SerializableAttribute]2public struct Nullable where T : struct, new()C#里像int, bool, double这样的struct和enum类型都不能为null。如果确实想在值域上加上null的话,Nullable就派上用场了。T?是Nullable&ly;T>的语法糖。要将T?转为T可以通过类型转换,或者通过T?的Value属性,当然后者要高雅些。1// Nullable arg = -1;2int? arg = -1;3if (arg.HasValue) {4// int v 阅读全文
posted @ 2014-03-07 12:03 Kein 阅读(697) 评论(0) 推荐(0) 编辑
迭代器
摘要:迭代器是一种方法、get 访问器或运算符,它通过使用 yield 关键字对数组或集合类执行自定义迭代。yield 返回语句会导致源序列中的元素在访问源序列中的下一个元素之前立即返回给调用方。尽管您以方法的形式编写迭代器,但编译器会将其转换为一个实际上是状态机的嵌套类。只要客户端代码中的 foreach 循环继续进行,此类就会跟踪迭代器的位置。说明:若要了解编译器在后台执行了什么操作,请使用 ILD... 阅读全文
posted @ 2010-07-29 11:40 Kein 阅读(396) 评论(0) 推荐(1) 编辑
事件
摘要:C# 中的“事件”是当对象发生某些有趣的事情时,类向该类的客户提供通知的一种方法。事件最常见的用途是用于图形用户界面;通常,表示界面中的控件的类具有一些事件,当用户对控件进行某些操作(如单击某个按钮)时,将通知这些事件。 但是事件未必只用于图形界面。事件为对象提供一种通常很有用的方法来发出信号表示状态更改,这些状态更改可能对该对象的客户很有用。事件是创建类的重要构造块,这些... 阅读全文
posted @ 2010-07-29 09:28 Kein 阅读(333) 评论(0) 推荐(0) 编辑
委托
摘要:委托是一种安全封装方法(引用方法)的类型,可以与具有兼容签名的任何方法关联。您可以通过委托调用方法。委托用于将方法作为参数传递给其他方法。事件处理程序就是通过委托调用的方法。您可以创建一个自定义方法,当发生特定事件时某个类(例如 Windows 控件)就可以调用您的方法。委托类型声明需要delegate 关键字,格式如下:[代码]如:public delegate void TestDelegat... 阅读全文
posted @ 2010-07-28 16:11 Kein 阅读(214) 评论(0) 推荐(0) 编辑
索引器
摘要:索引器允许类或结构的实例就像数组一样进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。索引器在语法上方便您创建客户端应用程序可将其作为数组访问的类、结构或接口。索引器经常是在主要用于封装内部集合或数组的类型中实现的。索引器表示法不仅简化了客户端应用程序的语法,还使其他开发人员能够更加直观地理解类及其用途。要声明类或结构上的索引器,请使用 this 关键字,如下例所示:[代码]索引器概述... 阅读全文
posted @ 2010-07-28 15:27 Kein 阅读(300) 评论(0) 推荐(0) 编辑
推荐一款正则表达式的测试工具
摘要:身为一个程序员,平时难免会用到正则表达式,虽然写起来不难,但调试起来还是很麻烦的!今天上网时无意中发现了一款正则表达式测试的测试工具,和我一样也为测试正则表达式的朋友可以看看,值得一试:http://www.unibetter.com/deerchao/downloads/RegexTester.zip此工具是在这里(http://unibetter.com/deerchao/zhengzhe-b... 阅读全文
posted @ 2010-07-13 10:20 Kein 阅读(319) 评论(0) 推荐(0) 编辑
C# 项目中的 bin 目录和 obj 目录的区别,以及 Debug 版本和 Release 版本的区别
摘要:1.关于 bin 目录和 obj 目录bin 目录用来保存项目生成后程序集,它有 Debug 和 Release 两个版本,分别对应的文件夹为 bin/Debug 和 bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。obj 目录是用来保存每个模块的编译结果,在 .NET 中,编译是分模块进行的,编译整个完... 阅读全文
posted @ 2010-05-21 11:22 Kein 阅读(531) 评论(0) 推荐(0) 编辑
C#验证类 可验证:邮箱,电话,手机,数字,英文,日期,身份证,邮编,网址,IP
摘要:基于方便各个项目的引用和扩展的目的,以下收集了一些常用的验证信息:代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;using... 阅读全文
posted @ 2010-04-07 10:50 Kein 阅读(1033) 评论(0) 推荐(0) 编辑
.net中 参数out,ref,params的区别
摘要:先总的来说:通常我们向方法中传递的是值.方法获得的是这些值的一个拷贝,然后使用这些拷贝,当方法运行完毕后,这些拷贝将被丢弃,而原来的值不将受到影响.此外我们还有其他向方法传递参数的形式,引用(ref)和输出(out).有时,我们需要改变原来变量中的值,这时,我们可以向方法传递变量的引用,而不是变量的值.引用是一个变量,他可以访问原来变量的值,修改引用将修改原来变量的值.变量的值存储在内存中,可以创... 阅读全文
posted @ 2010-04-07 09:55 Kein 阅读(626) 评论(2) 推荐(0) 编辑
C# 中用 PadLeft、PadRight 补足位数
摘要:在 C# 中可以对字符串使用 PadLeft 和 PadRight 进行轻松地补位。 PadLeft(int totalWidth, char paddingChar) //在字符串左边用 paddingChar 补足 totalWidth 长度 PadLeft(int totalWidth, char paddingChar) //在字符串右边用 paddingChar 补足 totalWidt... 阅读全文
posted @ 2010-02-01 15:15 Kein 阅读(463) 评论(0) 推荐(0) 编辑
sealed修饰符的使用
摘要:sealed的中文意思是密封,故名思义,就是由它修饰的类或方法将不能被继承或是重写。sealed关键字的作用: 在类声明中使用sealed可防止其它类继承此类;在方法声明中使用sealed修饰符可防止扩充类重写此方法。   sealed修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来... 阅读全文
posted @ 2009-11-27 20:28 Kein 阅读(405) 评论(0) 推荐(0) 编辑
如何:创建和终止线程(C# 编程指南--MSDN)
摘要:此示例演示如何创建辅助线程,并用它与主线程并行执行处理。还将演示如何使一个线程等待另一个线程,并正确地终止线程。有关多线程处理的背景信息,请参见托管线程处理和使用线程处理(C# 编程指南)。该示例创建一个名为 Worker 的类,该类包含辅助线程将执行的方法 DoWork。这实际上是辅助线程的 Main 函数。辅助线程将通过调用此方法来开始执行,并在此方法返回时自动终止。DoWork 方法如下所示... 阅读全文
posted @ 2009-11-06 16:15 Kein 阅读(721) 评论(0) 推荐(0) 编辑
使用VisualC#实现断点续传
摘要:在了解HTTP断点续传的原理之前,让我们先来了解一下HTTP协议,HTTP协议是一种基于tcp的简单协议,分为请求和回复两种。请求协议是由客户机(浏览器)向服务器(WEB SERVER)提交请求时发送报文的协议。回复协议是由服务器(web server),向客户机(浏览器)回复报文时的协议。请求和回复协议都由头和体组成。头和体之间以一行空行为分隔。  以下是一个请求报文与相应的回复报文的例子:  ... 阅读全文
posted @ 2009-10-22 17:39 Kein 阅读(199) 评论(0) 推荐(1) 编辑
用C#实现HTTP协议下的多线程文件传输
摘要:多人都有过使用网络蚂蚁或网络快车软件下载互联网文件的经历,这些软件的使用可以大大加速互联网上文件的传输速度,减少文件传输的时间。这些软件为什么有如此大的魔力呢?其主要原因是这些软件都采用了多线程下载和断点续传技术。如果我们自己来编写一个类似这样的程序,也能够快速的在互联网上下载文件,那一定是非常愉快的事情。下面我就讲一讲如何利用C#语言编写一个支持多线程下载文件的程序,你会看到利用C#语言编写网络... 阅读全文
posted @ 2009-10-22 17:36 Kein 阅读(353) 评论(1) 推荐(1) 编辑
winform下如何检测你一个给定的网址(Ull),是否可访问?
摘要:就是说我想监控一个网站,我想用程序写:隔一断时间就访问一下,看它是否好使!webrequest mywebrequest=webrequest.create("一个无效链接的地址");mywebrequest.timeout=5000;try{webresponse mywebresponse=mywebrequest.getresponse();stream resstream = mywebr... 阅读全文
posted @ 2009-10-22 17:35 Kein 阅读(313) 评论(0) 推荐(0) 编辑
C#实现http协议支持上传下载文件的GET、POST请求
摘要:C#实现http协议支持上传下载文件的GET、POST请求using System;using System.Collections.Generic;using System.Text;using System.Net;using System.Net.Sockets;using System.Collections;using System.IO;using System.Text.Regula... 阅读全文
posted @ 2009-10-22 17:34 Kein 阅读(2339) 评论(1) 推荐(1) 编辑
HttpWebRequest
摘要:HttpWebRequest 是 .net 基类库中的一个类,在命名空间 System.Net 下面,用来使用户通过 HTTP 协议和服务器交互。 HttpWebRequest 对 HTTP 协议进行了完整的封装,对 HTTP 协议中的 Header, Content, Cookie 都做了属性和方法的支持,很容易就能编写出一个模拟浏览器自动登录的程序。 程序使用 HTTP 协议和服务器交互主要是... 阅读全文
posted @ 2009-10-22 17:31 Kein 阅读(576) 评论(0) 推荐(0) 编辑
TimeSpan 时间间隔
摘要:[C#][Serializable]public struct TimeSpan : IComparable备注 TimeSpan 实例的值表示一个时间段。该值是实例中包含的刻度数,其范围可以在 Int64.MinValue 到 Int64.MaxValue 之间。一个刻度是可以指定的最小时间单位,等于 100 毫微秒。刻度数和 TimeSpan 的值都可以指定为正值或负值。可以按“[... 阅读全文
posted @ 2009-08-06 17:10 Kein 阅读(1277) 评论(0) 推荐(0) 编辑
实现运行时从字符串动态创建对象
摘要:在运行时任意指定对象的创建类型,甚至是用表示类型的名字的字符串创建所需的对象,.net Framwork的反射机制给我们带来了解决问题的方法。这里,若只需要创建一般的对象,我们可以通过System.Activator来实现,而较复杂的我们可以通过获取构造方法来实现。 反射Reflection是.net中重要机制,通过反射,可以在运行时获得.net中每一个类型(包括类、结构、委派、接口、枚举)的成员... 阅读全文
posted @ 2009-07-02 15:41 Kein 阅读(276) 评论(0) 推荐(0) 编辑
一些数据方法的参考
摘要:1.把金额数据从小写转换为大写namespace HaiNuo { /***************************************************************************************** * 类名:DecimalToUpper * * 功能:把金额数据从小写转换为大写 * * 限制条件:金额小于一万亿,且少于两位小数 * * ... 阅读全文
posted @ 2009-07-01 10:29 Kein 阅读(296) 评论(0) 推荐(0) 编辑