C#函数式程序编程2
主要内容 Action与Func类型介绍,在函数内部定义函数与返回函数,闭包与函数柯里化,高阶函数与Linq应用。 第一部分 Action与Func类型介绍 近来有一些人问我Action和Func类型是什么意思,为了整篇文章知识体系的完整性,先来给大家做一番介绍(如果你熟悉这两个类型,请跳过这部分)。 首先来看这样一个JavaScript函数: function sum(n1, n2) { return n1 + n2; } 我们知道,在JavaScript当中,函数是可以赋值为一个变量的,即: var sum = function(n1, n2) { return n1 + n2; ...
C#鼠标操作
#region 鼠标API /// <summary> /// 鼠标移动 /// </summary> /// <param name="X">目标x坐标</param> /// <param name="Y">目标y坐标</param> /// <returns></returns> [DllImport("user32.dll")] public static extern bool SetCursorPos(int X, int Y); [DllImport("user32.dll")] private static extern int mouse_event(int dwFlags, int dx, int dy, int cButto...
再说.NET/C#中的堆与栈
理解堆与栈对于理 解.NET中的内存管理、垃圾回收、错误和异常、调试与日志有很大的帮助。垃圾回收的机制使程序员从复杂的内存管理中解脱出来,虽然绝大多数的C#程序并 不需要程序员手动管理内存,但这并不代表程序员就无需了解分配的对象是如何被回收的,在一些特殊的场合仍需要程序员手动进行内存管理。 在32位的处理器上,每个进程的虚拟内存为4GB,.NET会在这4GB的内存块中开辟出3块内存,分别作为栈、托管堆、和非托管堆 堆(heap): 堆是从下往上分配,所以已用的空间在自由空间下面,C#中所有引用类型的对...
C#.net连接MySQL数据库方法
C#.net连接MySQL数据库方法 1、用MySQLDriverCS连接MySQL数据库先下载和安装MySQLDriverCS,地址: http://sourceforge.net/projects/mysqldrivercs 在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中 注:我下载的是版本是 MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exe using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.Odbc; using System.Drawing; using System.Linq; using System.Text; using Syst...
C#.NET使用operator重载操作符
C#.NET使用operator重载操作符 业务需求: 在程序中要求将两个用户的用户名和他们的持有金额的相加,如何来实现呢? 一般实现如下: User user1 = new User(); user1.Name = "张三"; user1.Money = 20; User user2 = new User(); user2.Name = "李四"; user2.Money = 15; //将两个对象相加,得到用户名和金额合计 User user3 = new User(); user3.Name = user1.Name +","+ user2.Name; user3.Money = user1.Money + user2.Money; //打印结果: //user3.Name :“张三,李四” //user3.Moeny:...
C#编程建议1:正确操作字符串
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Tip1 { class Program { static void Main(string[] args) { } private static void NewMethod1() { string s1 = "abc"; s1 = "123" + s1 + "456"; //以上两行代码创建了3个 //字符串对象,并执行了一次string.Contact方法 } private static void NewMethod6() { string re6 = 9 + "456"; //该代码发生一次装箱,并调 //用一次string.Contact方法 } private static void NewMethod2() { string...
程序员要明确自己发展方向
在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一起探讨一下。 明确入行的目的 很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容易找到工作,收入比普通的工作还要高一些,所以成为了很多高校毕业生的选择。如果您只是抱着这样一个心态来入行的话,那阁下可真的要小...
C语言中的指针
在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。 图中,设有字符变量C,其内容为“K”(ASCII码为十进制数 75),C占用了011A号单元(地址用十六进数表示)。设有指针变量P,内容为011A,这种情况我们称为P指向变量C,或说P是指向变量C的指针。 为了表示指针变量和它所指向的变量之间的关系,在程序中用“*”符号表示“指向”,例如,i_pointer代表指针变量,而*i_pointer是i_pointer所指向的变量。 下两语句作用相同: i=3; *...