C#语言我用很久了,但是却几乎没有专门去学习过语法,这门语言,emmm,下限低,上限很高,上手很简单,但复杂度比Java高很多,语法糖很多,所以圈子里的人很多有种高人一等的优越感哈哈,但其实国内的生态是比较差啦,有就是一些培训班啥的在吹,不过国外可以感觉到是比较热门的一个技术,平时遇到啥问题,可能用中文关键词搜不到,但是换成英文可以轻松搜索到很多高质量的答案,只能说国内的技术环境被阿里之类的大厂带偏了,大家都去搞Java了,很多其他好技术和好的语言无人问津,可惜啊……
这次项目也没用到啥高大上的东西,就是泛型、扩展方法、高阶函数这类,用得飞起,贴一小段代码来看看哈哈~
public static IList<TViewModel> ToViewModels<TModel, TViewModel>( this ISelect<TModel> data, IService<TModel, TViewModel> service, int limit = 0 ) where TModel : class where TViewModel : class { var limitData = limit == 0 ? data : data.Limit(limit); return limitData .ToList() .Select(service.Get) .ToList(); } public static IEnumerable<TViewModel> ToSampleViewModels<TModel, TViewModel>( this ISelect<TModel> data, IService<TModel, TViewModel> service, int limit = 0 ) where TModel : class where TViewModel : class { return data.ToViewModels(service) .Shuffle() .Take(limit); }这个代码就是把FreeSQL查询数据库的结果一键转换为ViewModel,转换过程是通过Service,功能很简单,但是做成扩展方法然后调用真的不要太爽,减少了n多代码重复,很舒服~
然后C#的高阶函数一开始我有点不习惯,因为之前写习惯python、dart和js,都是map、reduce、filter这些,但是C#的LINQ中却换了个名字,map对应select、filter对应where,这就很像SQL的风格了,我一开始都找不到……
总之C#语言值得好好学一学,对提高工作效率和编程思维是有帮助的!多看书就完事了!
参考资料C#中IEnumerable、ICollection、IList、List之间的区别
C#高阶函数介绍 https://www.jianshu.com/p/8a8f3743969b
几个库另外还有看到好像蛮不错的几个库,我还没用,目前已经把AspNetCore应用到工作中了,以后应该有机会把这些库用上hhh
Util应用框架:https://github.com/dotnetcore/Util/blob/master/readme.md
Masuit.Tools:https://github.com/ldqk/Masuit.Tools
欢迎交流我整理了一系列的技术文章和资料,在公众号「程序设计实验室」后台回复 linux、flutter、c#、netcore、android、kotlin、java、python 等可获取相关技术文章和资料,同时有任何问题都可以在公众号后台留言~