-
[C#] 编写高质量代码改进C#程序的157个建议——建议1:正确操作字符串
编写高质量代码改善C#程序的157个建议——建议1:正确操作字符串最近拜读了陆敏技老师的《编写高质量代码改善C#程序的157个建议》,感觉不错,决定把笔记整理一遍。建议1:正确操作字符串字符串应该是所有编程语言中使用最频繁的一种基础数据类型。如果使用不慎,我们就会为一次字符串的操作所带来的额外性能开...
70
热度 -
[C#] 编写高质量代码改进C#程序的157个建议——建议14: 正确实现浅拷贝和深拷贝
编写高质量代码改善C#程序的157个建议——建议14:正确实现浅拷贝和深拷贝建议14:正确实现浅拷贝和深拷贝为对象创建副本的技术称为拷贝(也叫克隆)。我们将拷贝分为浅拷贝和深拷贝。浅拷贝将对象中的所有字段复制到新的对象(副本)中。其中,值类型字段的值被复制到副本中后,在副本中的修改不会影响到源对象对...
52
热度 -
[C#] 编写高质量代码改进C#程序的157个建议——建议12: 重写Equals时也要重写GetHashCode
编写高质量代码改善C#程序的157个建议——建议12:重写Equals时也要重写GetHashCode建议12:重写Equals时也要重写GetHashCode除非考虑到自定义类型会被用作基于散列的集合的键值;否则,不建议重写Equals方法,因为这会带来一系列的问题。如果编译上一个建议中的Pers...
6
热度 -
[C#] 编写高质量代码改进C#程序的157个建议——建议6: 区别readonly和const的使用方法
编写高质量代码改善C#程序的157个建议——建议6:区别readonly和const的使用方法建议6:区别readonly和const的使用方法很多初学者分不清readonly和const的使用场合。在我看来,要使用const的理由只有一个,那就是效率。但是,在大部分应用情况下,“效率&...
94
热度 -
[C#] C#复建经典全面汇总
C#重构经典全面汇总C#重构经典全面汇总1、封装集合概念:本文所讲的封装集合就是把集合进行封装,只提供调用端需要的接口。正文:在很多时候,我们都不希望把一些不必要的操作暴露给调用端,只需要给它所需要的操作或数据就行,那么做法就是封装。这个重构在微软的代码库也经常遇到。比如最经典的属性对字段的封装就是...
117
热度 -
[C#] List<T>线性查寻和二分查找BinarySearch效率分析
List<T>线性查找和二分查找BinarySearch效率分析今天因为要用到List的查找功能,所以写了一段测试代码,测试线性查找和二分查找的性能差距,以决定选择哪种查找方式。线性查找:Contains,Find,IndexOf都是线性查找。二分查找:BinarySearch,因为二分...
54
热度 -
[C#] 编写高质量代码改进C#程序的157个建议——建议22:确保集合的线程安全
编写高质量代码改善C#程序的157个建议——建议22:确保集合的线程安全建议22:确保集合的线程安全集合线程安全是指多个线程上添加或删除元素时,线程键必须保持同步。下面代码模拟了一个线程在迭代过程中,另一个线程对元素进行了删除。classProgram{staticList<Person>...
13
热度 -
[C#] 编写高质量代码改进C#程序的157个建议——建议16:元素数量可变的情况下不应使用数组
编写高质量代码改善C#程序的157个建议——建议16:元素数量可变的情况下不应使用数组建议16:元素数量可变的情况下不应使用数组在C#中,数组一旦被创建,长度就不能改变。如果我们需要一个动态且可变长度的集合,就应该使用ArrayList或List<T>来创建。而数组本身,尤其是一维数组,...
34
热度 -
[C#] EmguCV学习——简略算法 差分与高斯
EmguCV学习——简单算法差分与高斯公司项目需要检测运动物体,我对opencv也没啥研究,google了好久看了好多方法,最简单的就是差分与高斯背景建模了。旁边搞c++的同事正在搞更nb的算法,等出来了我再转成C#版的分享。先看差分1//移动窗口[System.Runtime.InteropSer...
81
热度 -
[C#] 编写高质量代码改进C#程序的157个建议——建议20:使用泛型集合代替非泛型集合
编写高质量代码改善C#程序的157个建议——建议20:使用泛型集合代替非泛型集合建议20:使用泛型集合代替非泛型集合在建议1中我们知道,如果要让代码高效运行,应该尽量避免装箱和拆箱,以及尽量减少转型。很遗憾,在微软提供给我们的第一代集合类型中没有做到这一点,下面我们看ArrayList这个类的使用情...
70
热度 -
[C#] 编写高质量代码改进C#程序的157个建议——建议18:foreach不能代替for
编写高质量代码改善C#程序的157个建议——建议18:foreach不能代替for建议18:foreach不能代替for上一个建议中提到了foreach的两个优点:语法更简单,默认调用Dispose方法,所有我们强烈建议在实际的代码编写中更多的使用foreach。但是,该建议也有不适合的场景。for...
95
热度 -
[C#] 编写高质量代码改进C#程序的157个建议——建议61:避免在finally内撰写无效代码
编写高质量代码改善C#程序的157个建议——建议61:避免在finally内撰写无效代码建议61:避免在finally内撰写无效代码在阐述建议之前,需要先提出一个问题:是否存在一种打破try-finally执行顺序的情况,答案是:不存在(除非应用程序本身因为某些很少出现的特殊情况在try块中退出)。...
39
热度 -
[C#] 编写高质量代码改进C#程序的157个建议——建议39:了解委托的实质
编写高质量代码改善C#程序的157个建议——建议39:了解委托的实质建议39:了解委托的实质理解C#中的委托需要把握两个要点:1)委托是方法指针。2)委托是一个类,当对其进行实例化的时候,要将引用方法作为它的构造方法的参数。设想这样一个场景:在点对点文件传输过程当中,我们要设计一个文件传输类,该传输...
49
热度 -
[C#] 编写高质量代码改进C#程序的157个建议——建议32:总是优先考虑泛型
编写高质量代码改善C#程序的157个建议——建议32:总是优先考虑泛型建议32:总是优先考虑泛型泛型的优点是多方面的,无论泛型类还是泛型方法都同时具备可重用性、类型安全性和高效率等特性,这是非泛型和非泛型方法无法具备的。以可重用性为例:classMyList{privateint[]items;pu...
13
热度 -
[C#] C# Presentation 禁止或容许修改形状
C#Presentation禁止或允许修改形状在设定形状属性后,可禁止对形状某些属性的编辑,以达到保护形状格式的目的。常用方法有:锁定形状禁止选择,和禁止对形状的具体属性进行修改。前者保护形状的所有格式,无法选取,无法修改任何属性。后者,对形状的具体属性,例如形状大小,位置,类型,文本,旋转等,进行...
143
热度 -
[C#] C# 实现ADSL自动断网跟拨号(适用于拨号用户)
C#实现ADSL自动断网和拨号(适用于拨号用户)封装类:usingSystem;usingSystem.Runtime.InteropServices;publicstructRASCONN{publicintdwSize;publicIntPtrhrasconn;[MarshalAs(Unmana...
19
热度 -
[C#] C#模拟PrtScn实现截屏准备知识-剪贴板操作
C#模拟PrtScn实现截屏预备知识--剪贴板操作剪贴板是Windows操作系统中最常用的功能之一,它用来从一个应用程序向另一个应用程序传递数据,可以是文本,图象,甚至是程序对象。不过剪贴板也有限制,它在某个特定的时间只能指向一块内容,每一个随后复制的内容都会取代先前的内容。为了在C#中操作剪贴板(...
4
热度 -
[C#] C# 之 FTP服务器中文件上传与下载(1)
C#之FTP服务器中文件上传与下载(一)最近接手这样一个文件上传到ftp服务器的一个功能,接下来就给大家解析一下这一功能。首先,今天我们要讲的是怎么创建一个FTP服务器。1.首先我们创建一个用户,当然不想创建用户使用当前登录的用户也可以2.我们要安装必须的IIS组件3.我们在本地创建一个文件夹当做F...
39
热度 -
[C#] C#实现MD5WITHRSA签字
C#实现MD5WITHRSA签名这是很久以前的写的一篇博客了,今天把他重新找出来整理一下发布到博客园当时对接银联的时候搞了很久都没搞出来,后来一个偶然的机会发现类似的一个代码参考了一下终于弄好了这段代码主要是实现了C#服务端对接手机银联的java端的接口的签名希望可以帮到大家1usingSystem...
59
热度 -
[C#] 编写高质量代码改进C#程序的157个建议——建议100:静态方法和实例方法没有区别
编写高质量代码改善C#程序的157个建议——建议100:静态方法和实例方法没有区别建议100:静态方法和实例方法没有区别静态方法在加载时机和内存使用上和实例方法完全一致。在这里,我们先引出一个概念“类型对象”。比如类型Person,我们都知道newPerson()会产生一个对...
39
热度