c#
ligang2255
这个作者很懒,什么都没留下…
展开
-
C# tuple是个好东西
bug是个玩笑,其实它最大的价值就是一个轻量级“数据块”,这有点写汇编的感觉,你可以把还未实现的贝塔版功能写在发行版程序里,以后不用修改程序就能增加功能。它还能写bug,因为你用object参数可以随意重新定义成它,你就能在实现正常代码的基础上隐藏一些不正常代码。它有点像R语言的list把不同的东西塞进一个列表,解决了简单的泛型问题。如果你想要灵活的变量,又不想它太灵活像var,tuple是个好东西。C之后的高级语言,使用数据块变得很奢侈,现在又回来了。数据块返璞归真,是Opencv和R成功的基础。原创 2023-09-21 10:03:21 · 118 阅读 · 0 评论 -
C#语法糖的原罪
2、性能并没有提高甚至降低了:因为编译系统最终还是要把未明确的变量类型明确下来,把未命名的函数自动生成静态函数,这对编译器来说都是多余的负担。1、逻辑并没有减少甚至增加了:表达式的简化表面上降低了代码量,但实际上并没有减少脑力消耗,甚至还是因为糖带来的新规则引发更多逻辑思考的损耗。3、bug藏得更深了:因为逻辑过程被多种糖格式封装,找bug就要先拆分糖的逻辑层,然后才能看见bug在哪儿。4、并没有减少代码总量:程序员会多次使用相同的及类似的代码块,而这些代码块原本是应该重新组织并复用的。原创 2023-09-01 10:32:07 · 89 阅读 · 0 评论 -
opencvsharp二值图像反色
像素操作原创 2022-06-16 15:14:54 · 482 阅读 · 1 评论 -
线程的阻塞问题
线程很灵活,但是也很扯淡原创 2022-06-12 13:27:03 · 1350 阅读 · 0 评论 -
各种高级语言都有锁,可是锁真的有存在的必要吗?
我一直很奇怪锁这种东西,为什么要多个生产者共同生产一个产品? 如果是模块分工,那么就是多个生产者对应多个产品而已; 如果不分工,不是应该一个生产者管N个助理,最终还是一个生产者出一个产品吗? 莫非锁能提高性能?排序也绕不开啊。 百思不得其解…哎 ...原创 2022-02-11 10:40:00 · 283 阅读 · 0 评论 -
C# 的三个TImer
1、System.Timers.Timer应该是底层定时器,是比线层还底层、优先级更高的存在,是硬件定时器,理论上,它是最精准的。如果程序设计出错,你会发现exception里有“中断”字样、“外部访问”字样,中断机制是从30年前的DOS系统开始就有了。 2、System.Threading.Timer顾名思义是线程级别的定时器,它的时间是“线程时间”,放在主线程里调度子线程和逻辑模块是合适的,不会像第一个定时器,主线程退出了它可能还在。 3、System.Windows.Forms.Timer则是基于wi原创 2021-12-07 13:26:57 · 768 阅读 · 0 评论 -
C# 的新发明
1、delegate 把指针变成委托,是在迁就日益降低的程序员素质,因为他们擅长制造野指针。 至于action,func,一个是void * 一个是 * 2、=> 把匿名函数直接写出来,能减少书写ifelse组合逻辑,除此之外看不出有什么别的价值。 如果把表达式封装成传统的函数,更符合各类高级语言的通用逻辑范式,若加上重载,灵活性更高,虽然没那么直观,调用深度也增加了,但是水平方向的逻辑长度降低了、代码重用性提高了。 3、event 以前管态的叫中断信号。后来windows发明了消息机制。再后来是ti原创 2021-11-09 10:37:14 · 344 阅读 · 0 评论