-
[C#] 随机生成汉字(摘记保存的代码)
随机生成汉字(摘录保存的代码)///<summary>///随机生成汉字///</summary>///<paramname="strlength">长度(4位)</param>///<returns></returns>pub...
30
热度 -
[C#] 三、C#面向对象:封装、继承、多态、String、集合、文件(下)
3、C#面向对象:封装、继承、多态、String、集合、文件(下)面向对象多态一、装箱和拆箱装箱:将值类型转换为引用类型。objecto=1;值类型给引用类型赋值拆箱:将引用类型转换为值类型。intn=(int)o;强制转换为值类型满足条件:两种类型是否存在继承关系。intn=Convert.ToI...
350
热度 -
[C#] C#对称加密算法实现及相干类说明
C#对称加密算法实现及相关类说明采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。所谓对称,就是采用这种加密方法的双方使用方式用同样的...
48
热度 -
[C#] C#(WPF)中使用WinAPI函数开展截屏
C#(WPF)中使用WinAPI函数进行截屏在C#中,没有关于截屏的相关函数,这就需要使用Win32API函数在C#代码中完成截屏。一、基础知识介绍:gdi32.dll:系统文件gdi32.dll是存放在Windows系统文件夹中的重要文件,通常情况下是在安装操作系统过程中自动创建的,对于系统正常运...
21
热度 -
[C#] 利用implicit关键字干自定义类型隐式转换
利用implicit关键字做自定义类型隐式转换在C#中,implicit关键字可以用来做自定义类型隐式转换。下面给个例子来说明。先定义一个Point类,表示一个点:publicclassPoint{publicdoubleX{get;set;}publicdoubleY{get;set;}}再在Po...
41
热度 -
40
热度 -
[C#] Task.FromResult应用场景举例来说
Task.FromResult应用场景举例Task.FromResult用来创建一个带返回值的、已完成的Task。场景一:以同步的方式实现一个异步接口方法比如有一个接口包含异步方法。interfaceIMyInterface{ Task<int>DoSthAsync();}现在,需要以同...
718
热度 -
[C#] 等候所有或任意异步任务完成,以及异步任务完成时的处理方案
等待所有或任意异步任务完成,以及异步任务完成时的处理方案本篇体验如何等待所有异步任务完成、等待任意一个异步任务完成,以及异步任务完成时的处理。等待一组任务的完成使用Task.WhenAll方法。Tasktask1=Task.Delay(TimeSpan.FromSeconds(1));Tasktas...
77
热度 -
86
热度 -
[C#] C#定时检测子线程是不是已经完成
C#定时检测子线程是否已经完成C#定时检测子线程是否已经完成classProgram{staticvoidMain(string[]args){//主线程中启动一个支线程,执行doSomething这样的一个方法。Threadthread=newThread(newThreadStart(Threa...
56
热度 -
[C#] 编写高质量代码改进C#程序的157个建议——建议3: 区别对待强制转型与as和is
编写高质量代码改善C#程序的157个建议——建议3:区别对待强制转型与as和is建议3:区别对待强制转型与as和is在阐述本建议之前,首先需要明确什么是强制转型,以及强制转型意味着什么。从语法结构上来看,类似下面的代码就是强制转型。secondType=(SecondType)firstType;但...
48
热度 -
[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#程序的157个建议——建议5: 使用int?来确保值类型也可以为null
编写高质量代码改善C#程序的157个建议——建议5:使用int?来确保值类型也可以为null建议5:使用int?来确保值类型也可以为null基元类型为什么需要为null?考虑两个场景:1)数据库中一个int字段可以被设置为null。在C#中,值被取出来后,为了将它赋值给int类型,不得不首先判断一下...
7
热度 -
[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
热度