【送书活动】C# 程序员的自我修养

如果希望成为一个C# 高手,或者至少是合格的C# 程序员,应该懂些什么?《C#从现象到本质》(以下简称本书)试图回答这个问题。实际上,在本书问世之前,市面上已经有很多优秀的C# 书籍,例如著名的《CLR via C#》《C# in Depth》,本书也参考了其中一些章节,但加入了这两本书没有覆盖到的一些重要知识点。本书基于C# 7.0编写。

 

一个合格的C# 程序员必须熟悉C# 最核心的语言特性。本书没有讲基础的C# 语法,例如if/else/switch/while等等,因为人人都会。本书重点强调的是引用类型和值类型的区别和联系、委托与事件、泛型、反射、GCLINQ相关、DLR相关,等等。这些知识对一些人来说,可能在实际开发中从来没有用到(例如DLR),或者一直都在使用但不自知(例如LINQ中隐含了委托);但是,对这些内容是否深入理解,是区分一个批量生产的C# 程序员与一个合格的C# 程序员的很好方法。也许,你会觉得这些东西太过细微,似乎是“死抠书本”,但正如著名C# 程序员老赵曾经说的,“您也会觉得这些太细节,真要追究起来似乎也大都不是必须的,无视这些照样可以写程序,做网站,赚工资,但是我不会满足于成为(包括招聘)这样的程序员,暂时也懒得解释掌握这些东西的益处和重要性”。我对此的理解就是“project is cheap, show me theessential”。每个面试者都自带了若干个项目,你的优势在何处呢?你如何显现出水平高人一等呢?本书使用了大量的篇幅讲解C# 的核心语言特性,力求做到有一定的深度,和快速入门的书籍区别开。本书对任何一个语言特性,例如委托,都尽力阐述它的底层实现大概是怎样的,引入它是为了解决什么问题,在它没有出现时,类似的问题又是如何解决的。

 

一个合格的C# 程序员应该知道程序的本质是什么,程序是如何在操作系统上运行起来的。CLR via C#》之所以著名,因为它是第一个用CLR的视角来分析C# 语言的书(请仔细体会书名)。CLR的功能、两步编译、IL、对象在内存上的分布,这些内容可能在平时开发上真的用不到,但当你处理性能优化时,就会发现它们非常有用。

 

一个合格的C# 程序员应该对C# 提供的各种数据结构心中有数。数据结构和算法可谓程序设计的两大支柱,而现在它们的重要性似乎越来越小了,这是因为我们有太多的库可以直接拿来使用,不需要自己去实现一个经典的数据结构。也许我们不需要做到像算法工程师那样,对各种复杂的树(例如红黑树)、图有深刻认识,但是,对常见的数据结构,包括线性表、链表、队列、栈、哈希表等等概念和操作时间复杂度,是任何程序员都应该掌握的。本书的第11章专门讨论C# 的常见数据结构,这是同类型书籍较为少见的话题。

 

一个合格的C# 程序员应该了解什么是线程以及如何使用C# 进行多线程编程。如果一个WPF程序在执行耗时较长的任务时,界面直接冻结,用户只能坐等,那么这个程序肯定不会令人满意。C# 提供了非常丰富的类库可方便快捷地实现多线程。如果你想了解更多关于线程和进程的基本概念,本书的深度并不够,你可以找任意一本操作系统方面的书去研究。当多个线程有机会操作同一个资源时,线程同步变得十分重要。此时,需要有一个机制令同一时间只有有限个线程可以操作一个资源。C# 使用不同种类的锁来实现它。思路主要有两种:第一种是把资源操作变为原子的,称为用户模式的锁;第二种是将资源和一个内核对象挂钩,线程操作资源时需要去请示内核对象,这称为内核模式的锁。显然,由于访问内核对象速度很慢,还可以将这两种思路综合起来得到混合模式的锁,以加强锁的性能。本书的最后一部分比较详细地讨论了多线程的基本概念、同步以及各种多线程的实现方式,以最新的async/await作为结尾。

 

如果你已经了解了上面所说的全部内容,那么在小白程序员眼中,你可能已经是一个C# 高手了。但很显然,还有很多很多东西本书没有涉及,例如设计模式、持续集成、测试、数据库访问、性能优化,等等。C# 程序员可以只会拖拖控件就能找到工作,也可以手握利剑解决别人解决不了的问题。我相信每个人都希望成为后者那样的类型,通过自己的努力,进入更好的公司,接触到更具有挑战性的项目,与更厉害的程序员共事。希望本书可以在你学习C# 的过程中,对你有所帮助。 

京东地址:https://item.jd.com/12426618.html

640?wx_fmt=png


作者简介:

郝亦非  资深.NET开发人员,拥有多年开发经验,长期负责后端系统的搭建、重构与维护,对C# 语言理解深刻,在工作中积累了丰富的开发经验,乐于分享,在社区贡献了大量文章。

 

内容简介:

本书详细介绍用C# 语言进行程序开发需要掌握的知识和技术。全书由分三大部分,21章,第一部分“基础知识”,包括.NET基础知识、C# 类型基础、C# 的面向对象技术、字符串、垃圾回收、异常处理;第二部分“C# 特性”,包括委托和事件、泛型和反射、数据结构、LINQ的相关技术、动态语言运行时;第三部分“多线程和异步”,包括多线程的概念、多线程同步、异步编程的理论与实例、任务并行库等。本书精选大量案例,循序渐进地讲解C# 语言,内容丰富而翔实,并给出练习题,帮助读者更好地巩固所学知识,提升能力。本书还介绍了.NET程序员开发职位要求、技能等级、进阶之路,以及面试要点,可帮助开发者快速进阶,找到适合自己的工作。本书所有案例代码可以下载,地址为https://github.com/s055523/CodeForCSharpBook


欢迎留下您对本文的讨论,以及对C# 程序员的基础知识方面的感悟。评论获点赞最多的前五位读者将获赠《C#从现象到本质》图书一本(包邮)



.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319763.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【c++算法刷题笔记】——洛谷2

1. 洛谷练习——P1579 哥德巴赫猜想(升级版) 题目描述: 现在请你编一个程序验证哥德巴赫猜想。 先给出一个奇数n,要求输出3个质数,这3个质数之和等于输入的奇数。 输入格式: 仅有一行,包含一个…

【每日一题】7月10日精讲—矩阵取数游戏

来源:牛客网: 文章目录题目描述题解:代码:时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 262144K,其他语言524288K 64bit IO Format: %lld题目描述 帅帅经常跟同学玩一个矩阵取数游戏&…

【dfs】民生问题(2011特长生 T4)

题目大意 有n个问题,m个人,每个人可以解决一些问题,问最少选多少个人可以解决所有问题 解题思路 如果一个人解决的问题被别的人包括,那么可以把这个人丢掉 对于一个问题只能由一个人解决,那么直接选这个人 然后枚举…

张善友:自由之精神,中国之队长

张善友,毕业于兰州大学数学系,2006年开始连任微软最有价值专家(MVP),一直在社区宣导.NET开源项目,从早期的Mono到.NET Core,在社区被尊称为张队长,在腾讯工作11年后,进行…

CF461D-Appleman and Complicated Task【并查集】

正题 题目链接:https://www.luogu.com.cn/problem/CF461D 题目大意 n∗nn*nn∗n的网格需要填上xxx或ooo,其中有kkk个格子已经固定,求有多少中填写方案使得每个格子的四周都有偶数个ooo。 解题思路 约束条件相当于一个格子周围的异或和都为000&#xff…

工科数学分析无穷级数总结

目录序言一.常数项级数概念1. 什么是常数项无穷级数?2. 级数的收敛性与和两个特别的级数级数的判别方法①常数项级数判别法②正项级数的审敛准则③变号级数的审敛准则④绝对收敛二.函数项级数概念1. 什么是函数项级数?2. 函数项级数处处收敛与和函数一致…

dump解析入门-用VS解析dump文件进行排障

突然有一天部署在服务器的一个应用挂掉了,没办法只能进入服务器打开【事件查看器】查看下,好不容易找到了打开后一脸懵逼事件查看器查到的内容根本对我们排障没有任何作用。在这个时候如果有对应的dump文件就能派上用场了,只要有dump文件就能…

关于__int128高精度运算

参考文章 使用__int128可以实现高精度运算&#xff0c;但是这种大整数无法使用函数printf输出结果&#xff0c;所以需要手写输出 #include <bits/stdc.h> using namespace std; inline __int128 read() {__int128 x0,f1;char chgetchar();while(ch<0||ch>9){if(ch…

【树链剖分】Disruption P(luogu 4374)

正题 luogu 4374 题目大意 给你一棵树&#xff0c;还有若干边&#xff0c;每条边有一定代价&#xff0c;问你删掉树中的每条边后&#xff0c;使其成为连通图的最小代价 解题思路 不难发现&#xff0c;一条边只对两个端点在树中的路径上的边有贡献&#xff08;即删去树中的这…

P4831-Scarlet loves WenHuaKe【组合数学】

正题 题目链接:https://www.luogu.com.cn/problem/P4831 题目大意 n∗mn*mn∗m的网格上放置2n2n2n个炮&#xff0c;要求互不能攻击。 数据满足n≤m≤2000n\leq m\leq 2000n≤m≤2000或n≤m≤105n\leq m\leq 10^5n≤m≤105且m−n≤10m-n\leq 10m−n≤10 解题思路 每行每列最多…

AtCoder Beginner Contest 172总结

A-calc 直接按照题目输出就行 #include<iostream> using namespace std; int main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int a;cin>>a;cout<<aa*aa*a*a<<endl;return 0;}B-Minor Change 题中默认肯定能够从S替换到T那么直接不相…

一起开心2020暑假训练第二周 图论(模板题)

比赛链接&#xff1a; 文章目录A HDU 1285 一B HDU 1863 起C POJ 2387 开D POJ 1502 心E HDU 5922 图F HDU 2112 论A HDU 1285 一 拓扑排序模板题&#xff0c;记录每个点的入度&#xff0c;然后按照入度大小以及顺序进行输出 #include<iostream> #include<queue>…

.NET Core部署中你不了解的框架依赖与独立部署

作者&#xff1a;依乐祝原文地址&#xff1a;https://www.cnblogs.com/yilezhu/p/9703460.htmlNET Core项目发布的时候你有没有注意到这两个选项呢&#xff1f;有没有纠结过框架依赖与独立部署到底有什么区别呢&#xff1f;如果有的话那么这篇文章可以参考下&#xff01;为什么…

【树链剖分】旅游(luogu 3976)

正题 luogu 3976 题目大意 给你一棵树&#xff0c;每个点有一个权值s 现在给你一条路径&#xff0c;让你选择两个点x,y&#xff0c;使y在x后面&#xff0c;且sy−sxs_y-s_xsy​−sx​最大 然后该路劲上所有点权值加v 解题思路 树链剖分 在线段树上维护从左到右和从右到左…

P7276-送给好友的礼物【dp】

正题 题目链接:https://www.luogu.com.cn/problem/P7276?contestId39577 题目大意 nnn个点的一棵树&#xff0c;kkk个关键点&#xff0c;两个人从根出发分别走一段路径回到根。要求每个关键点至少被一个人经过&#xff0c;求最短时间。 解题思路 相当于求两个覆盖所有关键点…

dump文件解析之探索.Net的内存

前言&#xff1a;对于需要长时间运行的.net程序&#xff0c;有时需要我们查看内存的使用有没有内存泄露问题。我们可以从dump文件中找到答案。Dump的看点用dump文件来分析内存&#xff0c;到底我们需要关心哪些点呢&#xff1f;内存的使用情况 HeapSize/object的数量 也就是托管…

Codeforces Round #654 (Div. 2)

A.Magical Sticks 贪心凑长度为nnn的木棒 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #include<iostream> #include<algorithm> using namespace std; int n; int main() {IO;int T;cin>>T;while(T--){cin>>n;cout<<(n1)/…

P3307-[SDOI2013]项链【Burnside引理,莫比乌斯反演,特征方程】

正题 题目链接:https://www.luogu.com.cn/problem/P3307 题目大意 nnn个珠子的一个环形项链&#xff0c;每个珠子有三个1∼k1\sim k1∼k的整数。 两个珠子不同当且仅当它们不能通过翻转或者旋转得到两个项链不同当且仅当它们不能通过旋转得到珠子要求上面的数字互质项链要求相…

【树链剖分】Milk Visits G(luogu 5838)

正题 luogu 5838 题目大意 给你一棵树&#xff0c;和若干查询&#xff0c;每次查询一条路径上是否有点的权值为x 解题思路 离线处理&#xff0c;每次将树上权值为x的点附上1的值&#xff0c;然后询问就是求和&#xff0c;查询完后清零 代码 #include<cstdio> #includ…

2020牛客暑期多校训练营(第二场)

2020牛客暑期多校训练营&#xff08;第二场&#xff09; 最烦英语题 文章目录A All with PairsB BoundaryC Cover the TreeD DurationE Exclusive ORF Fake MaxpoolingG Greater and GreaterH Happy TriangleI IntervalJ Just ShuffleK Keyboard FreeA All with Pairs B Bound…