随笔分类 -  C#

摘要:可能是篇幅太短了,又被打入冷宫了.先重发一篇加上可选参数.本来不想加这个呢,因为可选参数可能大家用的会多点.其实这两个在VB中早就有了,C#中,在.net4发布之前是不能使用的.看到这个比较兴奋,我想大家也有好多人不知道,所以就强烈的想与大家分享一下.一、命名参数 命名参数会潜在的改变编写代码的方式.这个新功能能使代码更容易阅读和理解.例如,看一下System.IO名称空间中的File.Copy()方法,它一般构建为File.Copy(@"C:\mytestFile.txt",@"C:\myOtherFile.txt",true); 在这行代码中,这个简 阅读全文
posted @ 2013-07-03 18:30 幕三少 阅读(3776) 评论(11) 推荐(6) 编辑
摘要:命名参数会潜在的改变编写代码的方式.这个新功能能使代码更容易阅读和理解.例如,看一下System.IO名称空间中的File.Copy()方法,它一般构建为File.Copy(@"C:\mytestFile.txt",@"C:\myOtherFile.txt",true); 在这行代码中,这个简单的方法使用3个参数,但实际传递给Copy()方法的是什么内容?除非知道这个方法的前前后后,否则 仅看一眼该方法,很难判断出该方法会执行何种操作.而通过命名参数,就可以在提供参数值之前使用代码中的参数名,如下所示:File.Copy(sourceFileName: 阅读全文
posted @ 2013-07-03 17:55 幕三少 阅读(802) 评论(2) 推荐(0) 编辑
摘要:先说些题外话,只所以写这些东西。是看了CSDN上的曹版主的一篇:手把手教编程,不知道有没有人愿意参与。说实话,我工作四年,总感觉晕晕乎乎的,好多技术都懂,但是没有一项是精通的。看了这篇帖子,说实在话我可想去,去聆听大神的教导。主要是想提高自己,由于没有时间,又因为身在北京。所以就没有报名(呵呵,报名也可能没有机会去)。所以自己就去图书馆去搞他提出的这些概念。其实我更希望在北京的大神们也能组织类似的活动。我想响应一定也很多,其实我想如果能组织一次这样的活动,大神们也会得到提高的。这些都是我在图书馆看书的所得,分享给大家,同时也请管理员同志手下留情,不要每一篇都给打入冷宫,我已经很用心去做了。另. 阅读全文
posted @ 2013-07-03 07:37 幕三少 阅读(3571) 评论(10) 推荐(4) 编辑
摘要:2.2接口约束为了规定某个数据类型必须实现某个接口,需要声明一个接口约束(interfaceconstraint).有了这种约束之后,甚至不需要执行类型转换,就可以调用一个显示的接口成员实现.为了确保T类型参数都是先了IComparable接口,publicclassBinarywhereT:System.IComparable{...}编译器会确保每次使用Binary类的时候,都必须指定一个实现了IComparable接口的类型参数.2.3struct/class约束另一个重要的泛型约束是将类型参数限制为一个值类型或者一个引用类型.编译器不允许在一个约束中将System.ValueType指 阅读全文
posted @ 2013-06-30 11:57 幕三少 阅读(814) 评论(0) 推荐(0) 编辑
摘要:1.泛型概念: 本质上,术语”泛型”指的是”参数化类型(parameterizedtypes)”.参数化类型非常重要,因为它们可以在创建类.结构.方法和委托的时候将要操作的数据类型作为参数进行指定.使用参数化类型的类.结构.方法和委托都可以称为泛型,如”泛型类”或者”泛型方法”. 在具体声明一个变量或者实例化之前,类型参数T只是一个占位符。等到具体声明和实例化的时候,编译器要求代码指定类型参数。泛型类型声明了泛型参数占位符类型,由泛型类型的用户填写这些占位符,并作为泛型的参数提供给泛型类型.2.泛型约束:约束声明了泛型要求的类型参数的特征。 为了声明一个约束,需要使用where关键... 阅读全文
posted @ 2013-06-30 08:19 幕三少 阅读(1746) 评论(3) 推荐(1) 编辑
摘要:看到大家的留言,我想说下我对委托的了解,首先看它的定义:委托 就是将方法作为方法的参数不用先看例子什么的,你就多品味品味这句话,然后你看下使用委托的步骤,1.定义一个委托2.注册该委托3.使用委托Ok就这么简单,其实委托就像大家常说的那样:它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里憋得慌,浑身不自在其实不用怕,你就按着这三步来标准没错,下面来个小例子:第一步:定义委托public delegate void GreetingDelegate(string name); 第二步:注册委托这里先定义一个方法private static void 阅读全文
posted @ 2013-06-26 07:49 幕三少 阅读(2272) 评论(21) 推荐(4) 编辑
摘要:一直对Lambda表达式似懂非懂,平常也用过,就是不太明白有时候还要百度。周六去图书馆看书,看到下面这几句话,一下子就悟了:Lambda表达式(匿名函数),基本形式:(intput paramters)=〉expressiona.只有一个参数时,括号是可选的,两个或者更多用逗号隔开b.编译器无法推断输入函数类型时,可以按一下实例中的方式显示指定类型(int x,string s)=>s.Length>x 其它参数举例://两个参数(x,y)=>x==y//一个参数x=>x*x//零个参数()=>somemethod()Lambda语句(与Lambda表达式类似,只 阅读全文
posted @ 2013-06-24 13:16 幕三少 阅读(1806) 评论(11) 推荐(2) 编辑
摘要:因为是C#,所以平台肯定是.NET了。之前因为一个小小的业务需要接触了下密码键盘的操作。其实就是简单的获取用户输入密码的操作,没碰到什么大的问题,但是查资料的过程中还是感觉查到的东西挺多的,是那种越查越多,但是又不是很关键的东西。在调用DLL中的方法的时候,我们一般要对照函数说明来把C/C++中的类型转换为.NET中相对应的类型,而且方法必须声明为静态外部函数,即加上public extern static声明头.如果不加public ,函数默认为私有函数,调用就会出错。[DllImport("COM DLL path/file")]publicextern static 阅读全文
posted @ 2013-04-24 10:32 幕三少 阅读(3016) 评论(0) 推荐(0) 编辑
摘要:解决办法:在你的项目属性页面里面,把是否包含unsafe代码的选项选上 在生成的tab里,有一个允许非安全代码的选项, 英文是allow unsafe code,即允许不安全代码 阅读全文
posted @ 2013-04-24 10:31 幕三少 阅读(370) 评论(0) 推荐(0) 编辑
摘要:在使用托管代码调用非托管代码时,发生“对 PInvoke 函数“UseTwiHikVisionDllTest!UseTwiHikVisionDllTest.TwiHikVision::GetFirstPic”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。”解决方法: 添加属性:CallingConvention=CallingConvention.Cdecl如: [DllImport("TwiHikVision.dll", EntryPoint="Get 阅读全文
posted @ 2013-04-23 14:46 幕三少 阅读(2066) 评论(0) 推荐(0) 编辑
摘要:1.socket 通信传输汉字的方法:Encoding.GetEncoding("GB2312").GetString(Receivebyte) 发送接收都这样转化直接上程序 public partial class Form1 : Form { public Form1() { InitializeComponent(); } //定义委托 public delegate void ShowMessageHandel(string msg); //向控件添加显示信息 ... 阅读全文
posted @ 2013-04-02 17:09 幕三少 阅读(446) 评论(0) 推荐(0) 编辑