
C#
文章平均质量分 86
yangwenxue1989
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C#基础教程(十五) Linq
C#基础linq原创 2022-07-18 11:29:24 · 559 阅读 · 0 评论 -
C#基础教程(十三) VS平台与目标平台
平时开发C#时候,经常会遇到这个错误,其他信息: 未能加载文件或程序集"32BitLib, Version=1.0.0.0, Culture=neutral,PublicKeyToken=null"或它的某一个依赖项。试图加载格式不正确的程序,由此拉开程序集多少位大幕。(一) bit位查看要查看多少位程序集,可以利用VS2013 开发人员命令提示,打开这个.bat,可以发现里面配了很多环境路径,无非里面有一些.exe,用命令行启动程序而已。查看c#程序集dll,用一个corflagse.xe工具,在原创 2022-04-01 13:45:42 · 5005 阅读 · 0 评论 -
C#基础教程(一).NET框架
CLI的定义:Common Language Infrastructure公共语言基础结构,C#生成的不是处理器能直接解释的指令,而是一种中间语言指令,即CIL。原创 2022-03-22 16:59:35 · 6117 阅读 · 1 评论 -
C#基础教程(十二) 深扒ConcurrentDictionary
一 问题最近用CocurrentDictionary遇到一个问题,暂时无法理解,多线程操作,foreach循环报错:关键字不在字典中。所有线程都没有删除元素,只做没key增加和有key修改的操作,更奇怪的是在中断时看了keys数组集合,明明有,闹心又无语。逻辑大致如下,有会的大佬帮我解释下://报错:关键字不在字典中,keys里明明有当前出错keyoreach(var key in conDic.keys){ byte[] byts=conDic[key]}二 理解Concurre原创 2021-11-18 10:46:12 · 4393 阅读 · 0 评论 -
C#基础教程(十一)字符编码ASCII,Unicode 和 UTF-8
字符编码,这个概念虽然不需要具体深入去了解,经常默认选择一下,但仔细去研究一下,发现很有意思,看到一篇文章,感觉非常好,很值得推荐给各位。原创 2021-08-16 11:01:14 · 6103 阅读 · 0 评论 -
C#基础教程(十)软件打包
软件打包很多年前用过,当初用的好像是微软Install Shield Limited Edition,时过境迁,再次想做个安装文件,甚至无从下手,总结出一个原因,hen'jian'da原创 2021-06-16 16:10:13 · 5310 阅读 · 1 评论 -
C#基础教程(八)异步编程
说到异步编程,前一章的Task内容也是异步编程,这篇主要讲讲.net5.0中的新异步形式——异步方法及委托形式的异步调用。(一)异步方法async,await是异步方法的主要语法标志,两者的关系:首先一个被标记为async的方法,可以没有await调用,只不过会有编译警告。这是很显然的,不是把一个方法标记成async这个方法就成了异步调用的方法了。async这个关键词其实反而是可以省略的,这个关键词存在的意义是为了向下兼容,为await提供上下文,主要是await表达式开启了异步,我们通过下面一个异原创 2021-04-01 10:02:07 · 1416 阅读 · 0 评论 -
C#基础教程(九)容器foreach和多线程安全问题
闲话少说。在单线程操作List,Dictionary等集合的时候一点问题都没有,但是在多线程情况下,问题就出来了,经常会报错。我们可以看看源码,List的Add方法是线程不安全的,List的源码中的Add方法,使用了每次当当前的元素达到上限,通过创建一个新的数组实例,并给长度翻倍的操作。如果单线程操作不会有问题,直接扩容,然后继续往里面加值。下面是List的Add方法和核心逻辑:也就是说,当多个线程同时添加元素,且刚好它们都执行到了扩容这个阶段,当一个线程扩大了这个数组的长度,且进行了+1操作后原创 2021-03-25 09:47:35 · 2116 阅读 · 0 评论 -
C#基础教程(七)Task
在.net4.0之后MS就推出了Task多线程,作为之前一直使用Thread和ThreadPool的开发者来说,Task显然更容易管理线程,虽然也够用,但还是要保持与时俱进嘛~Task task=new Task(()=>{xxx});task.Start();//这是一种Task多线程构造方法,不会阻塞,是Action委托类型,用不到返回值Task<type> task=Task<type>.Run(()=>{xxx});timerTxt.Text= ta原创 2021-03-03 11:25:22 · 926 阅读 · 0 评论 -
C#基础教程(二)代码规范
无规矩不成方圆,C#开发也有自己的"规矩",遵循一定的代码规范,随之带来的好处使程序更加易读,也会变得非常的漂亮,提升自己颜值的一个过程。我们自己开发也要注意遵循,从网上总结了一套,我觉得行之有效。尽情期待!...原创 2020-07-29 09:08:31 · 279 阅读 · 0 评论 -
C#基础教程(六)容器的LINQ用法
更久没更了,心思又回归到代码学习中了。很多时候,我们需要对一些容器中的数据进行筛选,通常的做法可能用for/foreach循环来判断,但.net3.5就开始支持LINQ语言,这样使得我们敲代码更加优雅,提升效率,让代码显得更有"质感"。小编我个人认为,代码需要探索精神,突破自己的固有壁垒才逐步提升自己的代码水平,可惜小编对上班不是很感兴趣,志不于此。人走向成功的第一步首先是敢想,梦都不敢做,谈何实现,此话谨献于志在想创立中国500强级公司的有为青年,当然需要脚踏实地,一步一个脚印。好像扯多了,此篇会不断原创 2020-07-24 14:08:36 · 335 阅读 · 0 评论 -
C#基础教程(五)Null&&““&&Dispose()
平时敲代码中,经常碰到标题中的知识点,很模糊,现在进行梳理下:Section One"":被赋值为“”的字符串变量,会在栈上保存一个地址(占4个字节),该地址会指向 同时在堆上分配一个长度为0的内存空间(存放字符串的值)。null:被赋值为null的变量,会在栈上保存一个地址(占4个字节),该地址不会指向堆上的任何内存空间(1、初始赋值时不分配内存;2、将原来所指的内存空间变为不可达)...原创 2019-05-13 19:59:25 · 654 阅读 · 0 评论 -
C#基础教程(十三)消息队列——MSMQ
Net使用消息队列,借助windows组件来存储要完成的一系列任务,不用程序使用同一个队列,方便不同程序之间的数据共享和协作。队列分事务性队列和非事务性队列,默认创建的是非事务性队列。那么什么是事务性队列呢?事务性队列将消息保存在磁盘上,实现了持久化,也就是说当我们关机,断电后,下次再启动机器,我们的消息依然保存在队列里面,而非事务性队列则将消息保存在内存中,也就是说我重启电脑后,队列里面的消...原创 2019-04-22 10:56:56 · 4570 阅读 · 0 评论 -
C#基础教程(四)接口实现事件
在写WPF教程的MVVM篇章时,会碰到接口INotifyPropertyChanged,里面只有一个event PropertyChangedEventHandler PropertyChanged事件,因此引申出本章。可以在接口中声明事件,然后在类中实现该事件的引用。在为方法订阅事件时,可以订阅接口声明的事件,也可以订阅类中的事件。我们看下面这个例子。public class Cus...原创 2018-11-14 15:26:29 · 2244 阅读 · 0 评论 -
C#基础教程(二)ref&out和const&readonly
用C#也开发了也好几个项目,再一章章写基本语法没啥效果,一些很基础的或已经熟用的就不写了,主要写一些常用但概念模糊、未熟记及重要的知识点。第一篇就写写数值传参,或许你会发现,跟C++很神似。值传参时,实参可能会是一个值类型或者引用类型的变量。何谓值类型和引用类型?值类型就是真实数据存栈中,引用类型就是真实数据存堆中,地址存堆中,是不是很有变量和指针的味道。如果是值类型,栈中形参复制一个真实数据......原创 2018-10-11 10:58:02 · 1257 阅读 · 0 评论