C#学习前辈的真言

转自知乎话题:学习C#的正确姿势:
下面这些,都是我想对三年前的我说的,部分内容只代表自己的观点,当然你也应该有自己的思考,不要盲从:

1、为自己做一些小工具,解决自己平时的需求,这样可以增加兴趣,C#非常擅长做这块
2、购买或试用ReSharper :: The Most Intelligent Extension for Visual Studio,写代码时照着Reshaper的提示改,可以很快熟悉C#的高级语法
举个例子,取Age大于20的User的Name,用循环可以这样做:

List<string> names = new List<string>();
for (int i = 0; i < users.Count; i++)
{
    User u = users[i];
    if (u.Age > 20)
    {
        names.Add(u.Name);
    }
}
可以被resharper格式化成:
var names = new List<string>();
for (var i = 0; i < users.Count; i++)
{
    var u = users[i];
    if (u.Age > 20)
    {
        names.Add(u.Name);
    }
}
//这样就知道了var关键字。这时候resharper会提示for循环可以写成这样:
var names = new List<string>();
foreach (var u in users)
{
    if (u.Age > 20)
    {
        names.Add(u.Name);
    }
}

这样就知道了foreach语法。这时候resharper会提示还可以写成这样:

var names = users.Where(u => u.Age > 20).Select(u => u.Name).ToList();

这样就知道了LINQ,看LINQ的表达能力多么强大。resharper就像一个随时能给你反馈的老师一样。一旦你学会的这些高级语法,完全可以不再使用resharper的。
3、在 LeetCode Online Judge 上刷题,可以练习编程基本功和C#语法,同时对面试有益
4、如果做Web的话,不要使用Webform
5、遇到问题,调试、Google(或者一些代理,如天外天搜索 - 基于Google的搜索引擎)、在Stack Overflow上提问
6、没事逛逛GitHub · Build software better, together.,特别是:

  • quozd/awesome-dotnet · GitHub
  • .NET Foundation · GitHub
  • aspnet · GitHub

例如:
如果想参与C#的设计:

  • C# 7 Work List of Features · Issue #2136 · dotnet/roslyn · GitHub C#
  • Design Meeting Notes for Apr 14, 2015 · Issue #2134 · dotnet/roslyn ·
  • GitHub C# should support indexed property · Issue #2144 · dotnet/roslyn · GitHub

如果想参与.Net框架库的设计:

  • Propose: new method Enumerable.IndexOf · Issue #1415 · dotnet/corefx · GitHub
  • Add overloads to string trimming · Issue #1244 · dotnet/corefx · GitHub
  • New API for single-precision math · Issue #1151 · dotnet/corefx · GitHub

如果想参与CLR的设计:

  • Consider reference counter as alternative garbage collector · Issue #430 · dotnet/coreclr · GitHub
  • (Discussion) Lightweight Boxing? · Issue #111 · dotnet/coreclr · GitHub

7、《CLR via C#》是迟早要看的,配合工具ILSpy看,其它C#书没事翻一翻就好了
8、其它通用的书:《编码的奥秘》、《编写可读代码的艺术》、《编写高质量代码》、《编译原理》、《程序员的自我修养—链接、装载与库》、《程序员修炼之道:从小工到专家》、《代码大全》、《代码整洁之道》、《算法导论》、《重构.改善既有代码的设计》等
9、不要局限在C#或.Net上,C++、node、linux、mysql、js等等,如果感兴趣,都可以玩的,当然也不要局限在语言(咳咳…中文…咳咳)上

作者:York Yao
链接:https://www.zhihu.com/question/29815580/answer/45726193
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(C#,学习心得)