Stream/Bytes[]/Image对象相互转化
摘要:Stream转Byte数组、Image转Byte数组、文件转Stream等```csharp/// /// 将 Stream 转成 byte[]...
阅读全文
posted @
2014-08-26 18:48
Frank.Fan
阅读(6285)
推荐(4) 编辑
SqlDateTime overflow / SqlDateTime 溢出
摘要:Error - SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PMSqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:...
阅读全文
posted @
2014-08-22 20:59
Frank.Fan
阅读(4205)
推荐(1) 编辑
C#内存分配
摘要:## 值类型 & 引用类型我们知道,C#变量类型可以分为值类型和引用类型,值类型包括:简单类型(包括DateTime)、结构类型和枚举类型,引用类型包括类、数组、接口等。在变量初始化时,值类型在栈中操作,而引用类型在内存堆中操作;栈(Stack)是在编译时分配内存空间,而堆(Heap)在运行时动态分...
阅读全文
posted @
2014-08-11 17:38
Frank.Fan
阅读(449)
推荐(0) 编辑
BackgroundWorker使用方法
摘要:在做GUI界面程序的时候,经常会遇到执行长时间方法的需求,当执行长时间方法的同时,再去点击界面,界面就会出现“卡死、假死”的现象,这是因为界面GUI线程被阻塞而导致暂时无响应。解决的方法有很多种,下面介绍C#组件BackgroundWorker的使用方法。//异步执行,避免界面卡死, BackgroundWorker对象private BackgroundWorker bw = new BackgroundWorker();bw.WorkerReportsProgress = true;//bw.WorkerSupportsCancellation = true;bw.DoWork += ne
阅读全文
posted @
2014-01-13 22:25
Frank.Fan
阅读(2432)
推荐(0) 编辑
多线程和Socket——在线聊天室
摘要:多线程开发和Socket技术一、进程和线程进程:每个应用程序对应一个进程;线程:一个进程至少包含一个线程,线程要和CPU进行交互。多线程并发(可以理解为):"同一时间"执行多件事情,如程序一边执行,一边计数(计时);如人一边吃饭,一边看电视。多线程并发的本质,其实并不是CPU"同时"执行多件事情,而是在不停的切换,执行一段时间事件A,切换,执行一段时间事件B;再切换,再执行一段时间事件A,如此往复,因为CPU处理速度非常快,电脑的使用者感觉不到,所以看起来就像是在同时执行多件事情。线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器
阅读全文
posted @
2013-12-29 18:54
Frank.Fan
阅读(3937)
推荐(0) 编辑
.net版本发展历史
摘要:最近装上了VS2013,发现好多新特性、新功能,公司办公还在使用VS2005、VS2008,不过用着也很顺手,在最新版Visual Studio中,微软加入了git源码管理工具,和之前的TFS大体上类似。.net发展的现在已经有十多年的历史了,为了更好的理清.net的发展历史,特总结如下。一、.ne...
阅读全文
posted @
2013-12-04 23:09
Frank.Fan
阅读(4245)
推荐(1) 编辑
C# .Net基础知识点解答
摘要:1. 什么是.NET?什么是CLI?什么是CLR?IL是什么?JIT是什么,它是如何工作的?GC是什么,简述一下GC的工作方式? 通俗的讲,.Net是微软开发应用程序的一个平台;CLI是Common Language Infrastructure,是公共语言架构;CLR是Common Language Runtime,即公共语言运行时;IL是.Net编译器产生的中间代码,称为通用中间语言CIL(C...
阅读全文
posted @
2013-12-01 22:03
Frank.Fan
阅读(6179)
推荐(1) 编辑
C#几个小知识点
摘要:一、float数据类型小数在C#中需要用浮点型表示,浮点值就是.后面的小数点。C#语言中有两种小数类型,分别为32位单精度浮点型(float)和64位双精度浮点型(double)。其中精度指的是小数位数,小数位数越多,精度越高。由名称可知,float类型的精度比double型的低,由位数可知,float类型的范围比double类型小。 float类型中小数位数为7位,即可精确到小数点后7位,表示范围为1.5e-45~ 3.4e+38。对于一个小数其默认类型为double型,如果需要指定为float型,需要在小数后面添加F或f后缀。 如 float a=0.5f;二、格式化时间stati...
阅读全文
posted @
2013-11-08 17:10
Frank.Fan
阅读(481)
推荐(0) 编辑
C#中巧用#if DEBUG 进行调试
摘要:#if DEBUG是个好东西。#if DEBUG UserID = "abc@test.com"; Password = "123456"; #endif当调试代码的时候加上适当的判断,而不影响Release的代码。
阅读全文
posted @
2013-11-08 17:08
Frank.Fan
阅读(2790)
推荐(0) 编辑
C#代码优化—字符串拼接效率比较
摘要:字符串拼接主要有以下几种方法:+ : 加号String.Format() : 字符串格式化StringBuilder.Append()说明对于少量固定的字符串拼接,如string str = "a" + "b" + "c",则csc编译器会优化成 str = String.Concat("a", "b", "c"); 不会创建多个字符串。如果写成 string str = "a"; s += "b"; s += "c"
阅读全文
posted @
2013-09-29 23:10
Frank.Fan
阅读(1155)
推荐(0) 编辑
C#编码规范
摘要:1.避免将多个类放在一个文件里面。(原子性)2.一个文件应该只有一个命名空间,避免将多个命名空间放在同一个文件里面。3.一个文件最好不要超过1000行的代码。4.一个方法的代码长度最好不要超过50行。5.避免方法中有超过5个参数的情况。如果超过了,则应使用Class来传递多个参数。6.每行代码不要超过100个字符。7.避免利用注释解释显而易见的代码。a)代码应该可以自解释。好的代码本身就应具体良好的可读性,所使用的变量和方法命名一般情况下不需要注释。8.不要硬编码数字的值,尽量使用构造函数或可配置文件设定其值。9.只有是自然结构才能直接使用const(常量),比如一个星期的天数。10.每一个方
阅读全文
posted @
2013-09-23 23:46
Frank.Fan
阅读(382)
推荐(0) 编辑
C#中Math.Round()实现中国式四舍五入
摘要:C#中Math.Round()实现中国式四舍五入 C#中的Math.Round()并不是使用的"四舍五入"法。其实在VB、VBScript、C#、J#、T-SQL中Round函数都是采用Banker's rounding(银行家算法),即:四舍六入五取偶。事实上这也是IEEE的规范,因此所有符合IEEE标准的语言都应该采用这样的算法。 .NET 2.0开始,Math.Round方法提供了一个枚举选项MidpointRounding.AwayFromZero可以用来实现传统意义上的"四舍五入"。即:Math.Round(4.5, MidpointR
阅读全文
posted @
2013-05-30 18:03
Frank.Fan
阅读(80548)
推荐(10) 编辑
Winform中使用进度条的一个例子
摘要:因为在winform程序中,UI线程负责界面相关的工作。Winform中使用进度条的方法有很多,可以直接创建一个新的线程Thread执行耗时的方法;也可以使用线程池。例如://使用线程池异步执行longTime方法,不阻塞UI线程System.Threading.ThreadPool.QueueUserWorkItem(_ =>{ DoSomething();}如果想使用进度条,可以模拟进度操作,在一个循环内,//使用线程池异步执行longTime方法,不阻塞UI线程System.Threading.ThreadPool.QueueUserWorkItem(_ =>{ DoSome
阅读全文
posted @
2013-05-04 11:34
Frank.Fan
阅读(582)
推荐(0) 编辑
C#中的文件操作
摘要:1.获取某个目录下的所有文件方法1:DirectoryInfo TheFolder = new DirectoryInfo(dirPath);FileInfo[] fileInfo = TheFolder.GetFiles();//获取文件信息//遍历文件,提取文件名foreach (FileInfo file in fileInfo){ list.Add(file.Name);}方法2:string curDir = workSpacePath + "\\" + fileName;//获取当前目录下所有的文件,文件名是全路径的string[] fileNames = Di
阅读全文
posted @
2013-04-30 16:34
Frank.Fan
阅读(351)
推荐(0) 编辑
Winform中使用打开文件对话框和文件夹浏览对话框
摘要:在进行winform开发的时候经常会使用打开文件对话框(OpenFileDialog)和文件夹浏览对话框(FolderBrowserDialog)。一、文件夹浏览对话框(FolderBrowserDialog)第一步、从工具箱中引入一个FolderBrowserDialog组件,当这个组件被添加到窗体上时会出现在窗体下方的空白区域,如图:第二步、需要一个按钮激发打开文件夹的行为,针对这个按钮btnSelectPath我们可是使用如下方法:private void btnSelectPath_Click(object sender, EventArgs e){ folderBrowserD...
阅读全文
posted @
2013-04-30 14:52
Frank.Fan
阅读(1791)
推荐(0) 编辑
使用Http Basic方式发送微博
摘要:使用新浪微博接口发送微博有多种方式,本文介绍使用最简单的Http Basic方法调用新浪的接口。新浪微博开发平台 open.weibo.com,首先需要新建一个应用,得到AppKey就可以了。具体请看代码:using System;using System.Net;using System.Text;namespace SendWeiboV1{ public class BasicAuth { string username; string password; string key; public string Usernam...
阅读全文
posted @
2013-03-31 23:35
Frank.Fan
阅读(321)
推荐(0) 编辑
不使用第三个变量交换两个数字
摘要:交换两个数字: 1 using System; 2 3 namespace ConsoleApplication 4 { 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 // 交换2个数字的方法10 11 int a = 3, b = 5;12 int c = 0;13 14 // 方法1:借助第三方临时变量15 // 有点:阅读性强,开发时使用.16 ...
阅读全文
posted @
2012-12-23 13:08
Frank.Fan
阅读(325)
推荐(0) 编辑
字符串String
摘要:字符串1. string和String的区别string是C#中的关键字,并且是引用类型,string类型是字符串类型,表示零个或更多Unicode字符组成的序列。string是.Net Framework中String的别名。String是类,表示文本,即一系列Unicode字符。string是C#的基元类型(Primitive),简单来说就是编译器直接支持的数据类型。基元类型要直接映射到Framework类库(FCL)中,例如,C#中的一个基元类型int直接映射到System.Int32类型,这里int是基元类型,System.Int32是FCL类型。而String是FCL(Framewo
阅读全文
posted @
2012-12-15 12:13
Frank.Fan
阅读(760)
推荐(0) 编辑
C#面向对象高级语法(二)
摘要:类的转换is运算符 using System;classClass1{} class Class2 { } class IsTest { static void Test(Object o) { Class1 a; Class2 b; if (o is Class1) { Console.WriteLine("o is Class1"); a = (Class1)o;// do something for a } else if (o is Class2) { Console.WriteLine("o is Class2"); b = (Class2)o
阅读全文
posted @
2012-11-13 22:37
Frank.Fan
阅读(801)
推荐(0) 编辑
C#面向对象高级语法(一)
摘要:密封(sealed)类和方法 sealed关键字可以用来修饰类、变量和方法。sealed修饰符放在类之前,就将类声明为密封类,表示该类不能被继承。密封类主要防治意外的派生,同时可以提高程序的运行性能。在非密封类中,如果要防止一个实例成员在子类中被重写,就可以将该成员声明为密封成员,包括密封方法、密封属性、密封索引器等。对于密封方法,它只能用于对基类的虚方法进行重写,并提供具体的实现。所以在密封方法的声名中,sealed修饰符总是和override修饰符同时使用,以防止派生类进一步重写该方法。 比如: 1 using System; 2 class A 3 { 4 public vir...
阅读全文
posted @
2012-11-04 22:26
Frank.Fan
阅读(1751)
推荐(0) 编辑