C#中static关键字
摘要:静态变量和静态方法静态(static)变量 静态变量(类变量)是一种全局变量,它可以在各个对象实例间共享。class ABCD{ char data; static int share_data;}class StaticDemo{ ABCD a,b,c,d;}上述4个对象a,b,c,d共同拥有静态变量share_data.static变量的生存期不依赖于对象,其他类可以不通过实例化访问他们:public class StaticVar{ public static int number = 5;}public class OtherClass{ public v...
阅读全文
posted @
2012-11-03 23:47
Frank.Fan
阅读(843)
推荐(0)
C#可空类型(Nullable Types)
摘要:在讨论可空类型前,先回顾一下.NET对于类型的定义:".NET中类型分为值类型和引用类型,值类型不能为空,引用类型可为空";在这样的前提下,所有值类型都赋予了一个初始值例如:inti;(初始为0);由于数据库中出现的对应的值类型可为空,这样就出现了两者不能对应的问题。所有在C#2.0中引入了可为空的值类型,强调一点可空类型对于是值类型而言。实现方法如下:int i = 3;//一个值类型 int? k = 3;//一个可为空的值类型(简称可空类型) int m = null;//错误 int? j = null;//正确 从上面的例子我们可以看到在值类型后加上?可以定义一个
阅读全文
posted @
2012-11-01 20:38
Frank.Fan
阅读(2271)
推荐(0)
身份证号码15位转18位 C#实现
摘要:【身份证最后一位神秘X的由来】身份证中的“冷知识”1999年的今天,《国务院关于实行公民身份号码制度的决定》被发布,当年10月1日实施。为什么有的有X?这位数是根据前17位计算出的校验码。如某人尾号是0-9,不会有X,如是10,则用X代替。Ⅹ是罗马数字的10,这能保证身份证号不多位。/// /// 转换15位身份证号码为18位/// /// 15位的身份证/// 返回18位的身份证private string IDCard15To18(string oldIDCard){ int iS = 0; //加权因子常数 int[] iW = new int[] { 7, 9, 1...
阅读全文
posted @
2012-11-01 20:28
Frank.Fan
阅读(3565)
推荐(1)
C#中return、break和continue语句
摘要:returnreturn语句用于指定函数返回的值。return语句只能出现在函数的体内,出现在代码中的其他地方会出现语法错误。当执行return语句时,即使函数体内还有其他语句函数也会停止。public static void Do(){ return; } breakbreak语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句。由于它是用来退出循环或者switch语句,所有只有当它出现在这些语句中时break语句才是合法的。如果一个循环语句的终止条件非常复杂,那么使用break语句来实现某些条件比用循环表达式容易的多。比如:for (int i = 0; i...
阅读全文
posted @
2012-11-01 20:24
Frank.Fan
阅读(683)
推荐(0)
C#中的String.Format
摘要:把doubel保留2位有效数字double d = 123;string res = string.Format("{0:F2}",d);结果是:d = 123.00参考:string str1 =string.Format("{0:N1}",56789); //result: 56,789.0string str2 =string.Format("{0:N2}",56789); //result: 56,789.00string str3 =string.Format("{0:N3}",56789); //r..
阅读全文
posted @
2012-11-01 20:02
Frank.Fan
阅读(317)
推荐(0)
判断一个字符串是不是数字
摘要:判断一个字符串是不是数字的方法:1. 最简单的方法public bool IsNumber(string str){ int number = 0; return int.TryParse(str,out number);}这个方法适用于日常生活中遇到的大多数情况,可是如果碰到极端的情况,比如超过了int类型所能承受的最大值int.MaxValue(2147483647)就会失败。2.一个万无一失的方法public static bool IsNumber(string numericText){ bool isNumber = false; foreach (char...
阅读全文
posted @
2012-11-01 19:49
Frank.Fan
阅读(849)
推荐(1)
String.Empty、string=”” 和null的区别
摘要:String.Empty是string类的一个静态常量;String.Empty和string=””区别不大,因为String.Empty的内部实现是:public static readonly string Empty;//这就是String.Empty 那是只读的String类的成员,也是string的变量的默认值是什么呢?//String的构造函数static String(){ Empty = "";//Empty就是他"" WhitespaceChars = new char[] { '\t', '\n', &
阅读全文
posted @
2012-11-01 19:09
Frank.Fan
阅读(28414)
推荐(10)
计算程序运行的时间
摘要:在工作学习中,经常会遇到计算程序运行时间问题,下面介绍2中常用的方法计算程序运行时间。一、StopWatch 1 static void Main(string[] args) 2 { 3 //定义一个StopWatch对象 4 System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch(); 5 // 开始计时 6 timer.Start(); 7 for (int i = 0; i < 10 * 1000 * 1000; i++) 8 { 9 C...
阅读全文
posted @
2012-10-17 22:59
Frank.Fan
阅读(352)
推荐(0)
C#基础知识
摘要:【C#数组、泛型和集合介绍】1.数组声明和初始化 第一种方法:int[] myArray;(声明) myArray = new int[4];(初始化)或者一句话:int[] myArray = new int[4]; 第二种初始化方法:使用数组初始化器:int[] myArray = new int[4] { 4, 7, 11, 2 }; 当然,如果使用花括号初始化数组,还可以不指定数组的大小,因为编译器会计算出元素的个数。int[] myArray = new int[] { 4, 7, 11, 2 }; 终极版本:使用C#编译器还有一种更简化的形式:int[] myAr...
阅读全文
posted @
2012-08-05 20:32
Frank.Fan
阅读(434)
推荐(1)
利用文件头判断文件类型
摘要:上传文件时经常需要做文件类型判断,例如图片、文档等,普通做法是直接判断文件后缀名,而文艺青年为了防止各种攻击同时也会加上使用文件头信息判断文件类型。 原理很简单:用文件头判断,直接读取文件的前2个字节即可。 Demo using System; using System.IO; names...
阅读全文
posted @
2012-03-21 11:49
Frank.Fan
阅读(9843)
推荐(0)
C# 关键字params、ref 和 out
摘要:一、params1. 用params修饰的参数,参数列表是可变的。字面意思比较难懂,所以看示例很有用。class Program{ staticvoid Main(string[] args) { // 一般做法是先构造一个对象数组,然后将此数组作为方法的参数 object[] arr =newobject[3]{100,'a',"keywords"}; UseParams(arr); // 而使用了params修饰方法参数后,我们可以直接使用一组对象作为参数 // 当然这组参数需要符合调用的方法对参数的要求 UseParams(100,'a'
阅读全文
posted @
2012-03-21 11:07
Frank.Fan
阅读(339)
推荐(0)
【总结—String和Char的基本用法】
摘要:String类的基本用法string 是 String的别名,就像int是Int32、long是Int64的别名一样。这些结构都是从ValueType类派生而来的。属性或方法描述Equals()判断2个字符串对象是否相等CompareTo()StartWith(s)判断一个字符串是否以s开头EndWith(s)判断一个字符串是否以s结尾GetHashCode()获取字符串的哈希值IndexOf...
阅读全文
posted @
2011-09-20 09:50
Frank.Fan
阅读(693)
推荐(0)
【总结—.Net Framework集合类】
摘要:写在前面: 最近在学习.Net的集合框架,看了许多博文,也看了书,总感觉不是很明白。心里疑惑很多,每天郁闷度日。如果学技术时感到很痛苦,有两种可能,其一是学习方法不对;其二是真的不适合。希望大多数搞技术的朋友都不属于后者。方法不对,那得找解决方法呀,于是乎网上一顿狂搜,也没发现有价值的文章。同样地,我搜索了一下Java的集合类,文章一堆,图片更少满天飞。而.Net连一张像样的说明图片都没有,觉得微软的技术总是藏着掖着,放佛怕人知道似的。不知道各位有没有这样的想法!?不过话又说回来,这样也好,越是不想让我知道,我就越想知道,自己总结出来的东西才记忆深刻! 上面这幅图是Java的。 ...
阅读全文
posted @
2011-09-15 18:37
Frank.Fan
阅读(3804)
推荐(8)
【万丈高楼平地起 第三季 C#实现二叉树操作】
摘要:本文接上一篇【万丈高楼平地起 第二季 队列和栈】继续说明如何用C#语言实现二叉树的操作。四、树 链表、堆栈和队列都是线性结构(即序列)。树是一种特殊的非线性二维数据机构。树节点包含两个或两个以上的链接。工作中主要应用的二叉树——每个节点都有两个链接(其中可有一个或两个链接为null)。根节点是树的第一个节点。左孩子(left child)是左子树的第一个节点,右孩子(right child )是右子树的第一个节点。属于相同节点的子节点成为兄弟节点(siblings)。没有子节点的节点成为叶子节点。计算机科学家常常用根节点在上、叶子节点的方式画出一棵树——同树的自然生长方向恰好相反。 ...
阅读全文
posted @
2011-09-14 16:30
Frank.Fan
阅读(1684)
推荐(0)
【万丈高楼平地起 第二季 队列和栈】
摘要:接上一篇【万丈高楼平地起 第一季 链表是怎样链成的】,本文是基于上一篇链表来操作队列和栈的。二、栈1.堆栈是受约束的链表——堆栈只在栈顶(top)获取新节点和释放节点。因此,堆栈是一种后进先出(LIFO)的数据结构。底部(最后一个)节点的链接成员设成null表示栈底。2.堆栈的基本操作是压入(push)和弹出(pop)。压入操作是在堆栈顶部添加一个节点。弹出操作是从堆栈顶删除一个节点并从被弹出的节点返回被删除的数据。3.在C#中命名空间System.Collections下,包含了用于实现和操作堆栈的Stack类,在程序运行时,该类可改变大小。 我们来实现自己的Stack类。首先新建一个控制.
阅读全文
posted @
2011-09-14 16:22
Frank.Fan
阅读(1172)
推荐(0)
【万丈高楼平地起 第一季 链表是怎样链成的】
摘要:一、链表1.“连成一行”的、线性的数据项集合——用户可以在链表中的任何位置插入或删除数据。链表是自引用对象的线性集合(即序列)。其中的自引用类对象称为节点,节点之间通过引用(C/C++中叫做指针,高级语言称作引用)来链接,这便是“链表”一词的由来!程序通过首节点引用来访问链表,通过保存在前一个节点中的链接引用成员访问后继节点。习惯上将最后一个节点(即尾节点)的链接引用设为“null”表示链表结束。数据动态保存在链表中,程序员可以根据需要创建节点。节点中可以包含任意类型的数据,甚至是其他类型的对象。2. 堆栈和队列也是线性数据结构,而且是一种受约束的链表。树却是非线性数据结构。数组和链表比较:1
阅读全文
posted @
2011-09-13 21:50
Frank.Fan
阅读(1647)
推荐(0)