随笔分类 - C#遗忘系列
摘要:最近做一个小项目,项目中有一个定时服务,需要向对方定时发送数据,时间间隔是1.5s,然后就想到了用C#的Timer类,我们知道Timer确实非常好用,因为里面有非常人性化的start和stop功能,在Timer里面还有一个Interval,就是用来设置时间间隔,然后时间间隔到了就会触发Elaps...
阅读全文
摘要:说到.net中的并行编程,也许你的第一反应就是Task,确实Task是一个非常灵活的用于并行编程的一个专用类,不可否认越灵活的东西用起来就越复杂,高度封装的东西用起来很简单,但是缺失了灵活性,这篇我们就看看这些好用但灵活性不高的几个并行方法。一:Invoke 现在电子商务的网站都少不了订单的流...
阅读全文
摘要:我记得以前在园子里面讨论这两个类的文章有很多很多,并且还拿出了很多的测试报告,在什么情况下,谁比谁快,在什么情况下,该用谁不该用谁等等这些,我这里就不比较了,我就简单看看他们里面的内部实现,那就先看看String吧。一:String类 说到String类,资料上都说是存在于堆上的一个不可CUR...
阅读全文
摘要:既然说到匿名类型超级实用,得要找到场景来说服一下,如果大家玩过php,里面有一个万能的关联数组array,任你在关联数组array里面怎么写,都可以用json_encode来生成json,非常非常的方便。"hxc","age"=20,"isMale"=>true); //也可以这么写 $...
阅读全文
摘要:在很多家公司面试,也包括在携程,大多都会被问到一些算法的问题,其中机票事业部的面试,基本上算是算法问题的重灾区,没办法,有几个领导喜欢用数据结构来考人家,其中包括一些常见数据结构的复杂度以及手写一些算法,比如快排,单链表等等,前几天我一个推荐过来的朋友膝盖就被中了一箭。 题目就不方便具体说了,...
阅读全文
摘要:好久没过来扯淡了,话说这年头还有偶遇的事情吗?比如国庆回家的汽车上有个妹子要你qq,要你微信,想着法子跟你聊天,然后睡了一觉,醒来发现肾不见了?小花絮小花絮,要是肾真没了,也吹不了牛,败不了火了,继续言归正传。一:扩展方法 说到扩展方法,我想大家都已经再熟悉不过了,也许你的解决方案中有无数个...
阅读全文
摘要:前段时间出了个三级事件,查下来竟然是因为一个溢出造成的死循环,在公司出事件还是挺冒险的一件事,除了大boss要扣钱,还要给高层一个合理的解释,如果在小公司干活,可能就算网站宕了一天估计也没事,如果在大点的公司每秒都是银子的流失,也许造成的损失就算我们白干一二年也抵不了,所以责任心和代码意识真的很...
阅读全文
摘要:众所周知在面试中,经常有些崽子面试官会问些“事件和委托”的关系,也许一路走来的程序员大多都会被问到这个,那么对于这个高频的”事件和委托“问题,如何回击呢?首先我从最经典的一套面试题说起,用事件来实现 “猫爪老鼠“,这是一个从网上copy过来的一个例子。 static void M...
阅读全文
摘要:这段时间忙的像狗一样,写博客的事情也就耽搁了,继续扯,为什么说decimal神奇呢,大家都知道decimal是基元类型,但是这个decimal类型在IL中居然没有相应的IL指令,也就是说CLR根本不认识decimal,全是编译器这一层在糊弄我们。 话不多说,看下最simple的例子,(加了点注...
阅读全文
摘要:构造函数这玩意也是面试官经常会问到的东西,我们知道一个类的状态初始化就全靠它了,下面提几个小问题。Q:我看到Web项目里面通常都有一个BasePage页面,其中构造函数里面做了权限验证, 请问为什么要这么做。A: 既然这么做了,那么设计者肯定就知道了一个原则就是实例构造器中,父类构造器先于子类...
阅读全文
摘要:这篇继续聊聊 ”参数“的一些话题,我们知道参数大概有”默认参数“,”可选参数“,”ref参数“,”out参数“以及”可变参数“。下面提几个小问题,可能在面试中会被问到。Q:请问我按照如下方式传递参数的时候,最后的m等于多少? 1 static void Main(string[]...
阅读全文
摘要:这些天太忙了都没更新博客了,这篇我们继续聊聊“属性”,大家都知道,属性其实分两种,无参属性和有参属性,顾名思义无参属性就是我们平时用到的 “属性”,有参属性就是我们所说的 “索引器”,1 public class Bird2 {3 public int Age ...
阅读全文
摘要:我们在学习C#的时候通常都会多多少少接触ILDasm和Reflector,这两样工具让我们对C#的理解不会只停留在编译器这个层面上,而是让我们更深入的穿透编译器。这篇也是希望对IL和Reflector不是很了解或者懒的了解的同学能够重视起来,同样这篇我还是以QA的形式来告知这两样工具的强大和必...
阅读全文
摘要:首先不可否认,这些在面试上会经常被面试官问起,但是你回答的让面试官满意吗?当然如果你知道了这些原理,或许你就不怕了。既然说到了原理,我们还是从MSDN说起。 一:值得推敲的几个地方1.先来看看msdn上面对const是怎么说的,我们会看到。不能修改,编译时常量这些关键性信息。Q: const为...
阅读全文
摘要:也许某天你来某一家公司面试,或许就会被问到这个问题,当你看到这个问题,也许会立即反编译下源代码看个究竟。 1 [Serializable, StructLayout(LayoutKind.Sequential), __DynamicallyInvokable] 2 public struct...
阅读全文
摘要:这几天比较清闲,刚好前段时间买了本CLR Via C#,在.Net界大家都知道Jeffrey大师的这本经典著作,惭愧一直没有拜读。不过在C#著作中经典的非常多。读书的那时候就是通过《C#与.NET 3.0高级程序设计》这本书接触C#的,也被称为C#圣经。CLR Via C#中的委托说的非常好,比...
阅读全文
摘要:说到FlagsAttribute,源自前几天看到了一小段代码,大概意思就是根据航班政策来返回哪些配送方式是否可用,根据这些是否可用来隐藏或者开启界面的相关配送方式,如果大家订过机票可能知道配送方式有很多种,比如“无需打印行程单(PJN)”,“机场自取(Airport)”,“市内配送(CND)”,...
阅读全文
摘要:这篇继续分享下GetHashCode和ExpandoObject这两个比较好玩的方法。一:GetHashCode 从MSDN上可以看到的解释是:用作特定类型的哈希函数,也就是说任何对象的实例都会有一个int32类型的HashCode,并且存放在FCL中的HashCollection中,废话不说...
阅读全文
摘要:时间太快了,三月又要过去了,告别一下。。。继续期待生死未卜的四月,今天我们继续挖一挖。一: Environment.StackTrace 可能我们看到最多的就是catch中的e参数,里面会有一个StackTrace,然后不可否认的这玩意太有用了,它会把调用堆栈中的信息输出出来,有了它,我们就可以快速的知道运行代码的执行流并且快速的定位到问题。 有时候我们会遇到这样两个问题:①:线上的bug在本地不能重现。②:由于太多的多态,设计模式,程序员反而对线上的代码执行流向会搞的稀里糊涂的。 为了搞清楚并解决这两个问题,我们看生产日志的时候很在乎代码的执行流以及想获取当前上下文的可疑变量值...
阅读全文
摘要:不知道有人做没做过对日外包,如果做过的话,那么对vb.net应该非常熟悉了,当年我刚毕业的时候也做过四个月的外包,那种日子简直不是人过的,就连大楼下面买珠宝的阿姨都说,这些孩子,只看过他们上班,就没见过他们下班,不过有一点好,有个QA的小姑娘天天下午6点教我们倭瓜语,现在还在勾搭中。。。 好了,现在我们看看需求。一: 如何判断“a”是不是数字类型。 ①:在C#中我们可能会用TryParse来判断当前的”a“是否为整数。 1 static void Main(string[] args) 2 { 3 var a = "a"; 4 ...
阅读全文