V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kklk
V2EX  ›  程序员

请教一下各位大佬,我想入门 C#,有没有教材书籍推荐一下

  •  
  •   kklk · 2022-07-13 17:48:28 +08:00 · 6977 次点击
    这是一个创建于 899 天前的主题,其中的信息可能已经有所发展或是发生改变。
    谢谢各位大佬,如果有视频教程就更好了
    56 条回复    2024-02-04 10:53:37 +08:00
    Akiya
        1
    Akiya  
       2022-07-13 18:28:03 +08:00 via iPhone
    aw2350
        2
    aw2350  
       2022-07-13 18:28:25 +08:00
    做 u3d?不是 u3d 不建议做.net
    quan01994
        3
    quan01994  
       2022-07-13 18:33:31 +08:00   ❤️ 1
    官方文档是最好的 ,视频的话 channel9 上有很多。官方的博客也可以多看看 。

    还有我想说一下,有些人真的很狭隘 。
    kklk
        4
    kklk  
    OP
       2022-07-13 18:37:31 +08:00
    @aw2350 嗯 u3d 是一方面,另一方面是想在 win 上开发一些程序,自动脚本之类的。
    kklk
        5
    kklk  
    OP
       2022-07-13 18:39:40 +08:00
    @quan01994 狭隘是什么意思,不太理解您的说法,我是新手不太懂。官方文档我准备先完整的阅读一遍,不知道有没有代码案例平台,您能推荐一个吗,我想后续可能要用实例来检验自身所学的内容。
    kklk
        6
    kklk  
    OP
       2022-07-13 18:42:21 +08:00
    @Akiya 嗯嗯 谢谢
    thinkershare
        7
    thinkershare  
       2022-07-13 18:55:05 +08:00
    @aw2350 人家学什么, 关你毛事! @kklk 它就是说 @aw2350 , C# in Depth(深入理解 C#), Essential C#(C#本质论), 另外微软提供的文档非常完善. 作为一门语言的 C#, 发展到 11 版本, 已经非常完善, .NET 6.X 的性能也绝对不差. 如果你不认为微软有原罪, 完全可用认证学. 另外 C#和 TypeScript 是同一个人建立的. 有很多相似性. 另外如果你需要找工作, 的确需要仔细思考, 国内.NET 的工资偏低, Java 系的很多人掌握了互联网的话语权, 微软自己又作死, 开源太晚!
    thinkershare
        8
    thinkershare  
       2022-07-13 18:57:56 +08:00
    @kklk 另外你需要找个事情来做, 例如使用 Span 写个性能不错的 JSON 解析器. 这种纯粹不需要依赖第三方的 API 的库, 可用考验你对语言的理解, 还有抽象问题的能力. 编程的核心是使用某个语言去抽象某种需求, 然后平衡各种矛盾. 如果你遇到学习问题, 我可以给你提供免费咨询.
    aguesuka
        9
    aguesuka  
       2022-07-13 19:06:41 +08:00
    @aw2350 问题 u3d 也不是 .net 啊
    a33291
        10
    a33291  
       2022-07-13 19:29:41 +08:00
    这两年 C#语言发展非常快,很多书籍(特指中文)没有跟上进度,比较推荐微软官网自身的文档.当然,早期的书籍的知识任然有效,因为语法等兼容性非常好.
    当然,根据具体的开发目标又有一些更为细分的技术需要学习(比如 WPF 的 xaml),但相对通用的书籍推荐 2 本
    <<C#高级编程>>和<<CLR via C#>>

    此外
    u3d 用到了 C#作为脚本语言(C#只是.net 中的一员,是一个规范+平台,可以这么理解,但是 C#是.net 上最具代表性的语言,所以很多人简单的理解为 C#就是.net,其实还有 VB 以及 F#等语言),的确为推动 C#做出了积极的贡献,同时微软投入大量的精力发展 C#及其相关生态也反哺了 u3d 等应用方.
    ragnaroks
        11
    ragnaroks  
       2022-07-13 19:37:22 +08:00
    一楼给的 MSDN 就够了,或者看下 youtube TimLiu 的视频,dotnet 主要是易学难精,就有很多人写出性能和 java 一样甚至和 PHP 一样的代码(光一个 System.Runtime.Intrinsics 面试就能筛掉 99% 的人),查找相关资料应以 msdn 为主 stackoverflow 为辐。
    ragnaroks
        12
    ragnaroks  
       2022-07-13 19:40:18 +08:00
    二楼看法可能狭隘了但很中肯,除非你和我一样在合资公司,否则多半用的是 java 、js ( node )、go ;另外由于 dotnet 全能,如果你去的是普通公司,极有可能你会变成全干工程师,工资却不会有很高的倍数。
    aw2350
        13
    aw2350  
       2022-07-13 20:02:51 +08:00 via iPhone
    @kklk 建议以就业为导向;c#方向薪资待遇偏低,机遇较少;目前在工控上位机客户端以及游戏(u3d )还有点市场,
    aw2350
        14
    aw2350  
       2022-07-13 20:03:31 +08:00 via iPhone
    @thinkershare 我给人家建议你这条哈巴狗叫什么
    aw2350
        15
    aw2350  
       2022-07-13 20:05:50 +08:00 via iPhone
    @ragnaroks net 可不全能,国内市场还是传统领域,加上这几年要自主可控,这些传统信息系统肯定会被替代掉;虽然 net 开源了,但是国家不认可微软的技术栈
    aw2350
        16
    aw2350  
       2022-07-13 20:11:51 +08:00 via iPhone
    @kklk 一句话,就业为导向,薪资为导向;另外,培训机构都不开的技术方向,以及国内大学几乎没有课程的方向,也没多少人讨论的方向,你觉得会是一个好的方向?如果你做游戏,或者要去外企,或者出国,可以选
    ragnaroks
        17
    ragnaroks  
       2022-07-13 20:13:34 +08:00
    @aw2350 我在武汉,给政府做的项目都是要求是 dotnet framework 4.5
    aw2350
        18
    aw2350  
       2022-07-13 20:19:27 +08:00 via iPhone
    @ragnaroks 那应该是一些边缘信息类系统吧,最近接触的政企项目,大部分都提出要以后支持 arm 架构或者国产 linux 或国产 cpu 指令集或者国产数据库,这些 net4.5 肯定是支持不了的
    ragnaroks
        19
    ragnaroks  
       2022-07-13 20:48:56 +08:00
    @aw2350 一般都是单位的官网之类,比如公安的内网门户,功能就是一些文章和视频的发布
    inframe
        20
    inframe  
       2022-07-13 21:33:23 +08:00
    用过开源的 net core 6 ,可以编译到 Linux
    不过还需要时间验证,不知道各个平台兼容性怎么样
    zhuangzhuang1988
        21
    zhuangzhuang1988  
       2022-07-13 21:35:01 +08:00 via Android   ❤️ 1
    基础的看下后
    可以跟着微软的一个大佬后面学编译器
    里面涉及了很多,怎么写测试,怎么写好一个编译器,怎么做重构,怎么 debug, 光第一节课看完后,就发现,比一堆 blog 写得好很多很多
    [[中英字幕] C# 构建编译器 ( Building a Compiler )-哔哩哔哩] https://b23.tv/zO6dJjR
    a33291
        22
    a33291  
       2022-07-13 21:37:25 +08:00
    ``国家不认可微软的技术栈``,请问这个结论是怎么得出的?国家从官方渠道认可过哪些技术栈?
    因为我们自己主要用 netcore 为 ZF 开发包括门户、大规模运维系统(市级或省级设备检测和管控)、视频融合在内的系统,所以技术选型大多是公司遗留或技术决策人的个人喜好问题。

    生态这个东西的确就是靠运势,比如 py 能借机器学习起来(但是大部分需要性能的都还得是 c/c++),然后生态好,学的人多,市场接受度广又反向推动更多人去学,.net 在 web 市场方面(互联网企业为主)的确是无法与 java 等竞争.


    当然,对于个人而言,面向工资编程是明智的选择.

    对于传统的.net framework 都绑死在 win 上,我们从 17 年开始切换到 netcore ,几乎不再使用.net framework 。后续可能支持 win arm 版,netcore 才跨平台支持 x86\x64\arm,所以对于跨平台 ui 类软件可以考虑 QT 或 web electron 栈(maui 不好说,可参考隔壁 flutter,此外其他的跨平台 ui 如 Avalonia 等没用过不清楚),对于 win 上绑死的程序来说 winform 和 wpf 都还不错
    darknoll
        23
    darknoll  
       2022-07-13 21:57:00 +08:00
    不建议学 c#,学了没卵用
    1217950746
        24
    1217950746  
       2022-07-13 22:28:37 +08:00
    @a33291 Avalonia 香的一批
    qwq11
        25
    qwq11  
       2022-07-13 22:53:58 +08:00
    c# 写着爽的一批,这两年没关注了,但是还是要说句 c#是他吗写着最爽的语言
    官方文档就行,一般来说语法和语法糖入门了之后,剩下的就是查文档了,而且很多时候也不用查,凭直觉就找得到很多东西。而且有 intellisence 鼠标移上去就看得到一大片的解释。除此之外,想了解底层 Runtime 相关的,推荐《 CLR via C#》
    u823tg
        26
    u823tg  
       2022-07-14 00:28:33 +08:00   ❤️ 2
    C# 10 in a Nutshell Essential.C#.8.0. 这两本入门应该够了。
    FungKao
        28
    FungKao  
       2022-07-14 07:53:28 +08:00
    推荐一下我的 .NET 周刊,定期发布 .NET 生态内容

    https://github.com/DotNETWeekly-io/DotNetWeekly
    kklk
        29
    kklk  
    OP
       2022-07-14 09:27:52 +08:00
    @thinkershare 如果是按薪资的话,您建议学哪个语言呢
    INCerry
        30
    INCerry  
       2022-07-14 09:33:13 +08:00   ❤️ 2
    很久之前回答过类似的问题,我把书单贴一下

    附上.NET 新手资料:
    https://dotnet.microsoft.com/zh-cn/
    https://dotnet.microsoft.com/zh-cn/languages/csharp
    https://dotnet.microsoft.com/zh-cn/learn
    https://dotnet.microsoft.com/zh-cn/platform/why-choose-dotnet
    https://dotnet.microsoft.com/zh-cn/apps/xamarin

    《 C# 高级编程》
    《果壳中的 C#》
    《深入理解 C#》
    你必须知道的.NET
    《 C#高效编程 : 改进 C#代码的 50 个行之有效的办法》后面也出了个 150 个办法
    《 More Effective C#中文版 : 改善 C#程序的 50 个具体办法》
    《 Async in C# 5.0 》
    《 C#并发编程经典实例》
    《 C#多线程编程实战》
    《 CLR via C#》
    《.NET 本质论 第 1 卷:公共语言运行库》
    《.NET 探秘 : MSIL 权威指南》
    《.NET 性能优化》
    《.NET 设计规范 : 约定、惯用法与模式》
    《.NET 内存管理宝典》
    《.NET Core 底层入门》
    kklk
        31
    kklk  
    OP
       2022-07-14 09:36:51 +08:00
    @a33291 面向工资编程这个,您有什么建议学习的语言吗。目前的想法是学习一下 c#,等有一点成效之后学习一下 golang
    Itoktsnhc
        32
    Itoktsnhc  
       2022-07-14 09:45:06 +08:00
    c# -> golang:golang 怎么这么难受
    golang -> c# : golang 怎么这么难受

    如果目标是 golang 我建议直接上吧 golang 学起来比 c#简单多了
    leexy
        33
    leexy  
       2022-07-14 10:12:41 +08:00
    学 Java 吧 去卷他们
    thinkershare
        34
    thinkershare  
       2022-07-14 10:59:27 +08:00
    @kklk 工资和任何语言都没有太大的直接关系, 任何一门语言中都有高收入的, 只是有一个大致分布.
    工资高的大部分职位要求的不是语言. 而是解决问题的综合能力.
    作为职业程序员, 你至少需要会 2-4 门编程语言,
    工业界广泛使用的这些语言: c/c++/rust, golang/c#/java, javascript/typescript, python/R, 你都可以学一学.
    他们都有自己的生态位, 在自己的生态位上, 这些语言相比于其它语言有自己优势, 如果一定说哪一门必须学, 我推荐 JavaScript, 所以你首先要知道, 你未来主要想要从事什么样的工作, 它需要的技能树中那个语言是必须的, 就先去学它.
    软件从来都不直接受到编程语言的限制. 但各个编程语言都有自己的习俗和看待并解决问题的思维.
    多换几个语言, 可以看看从不同角度解决同一个问题时候的思维差异.
    想要踏实将软件工程师作为职业, 最需要是牢固掌握考研的哪几门计算机核心课程, 然后选择自己喜欢的而且认为有钱途的方向深耕. 另外工作久了, 你会发现技术并不值钱, 值钱的是业务逻辑和商业模式.
    a33291
        35
    a33291  
       2022-07-14 11:00:07 +08:00   ❤️ 1
    @kklk
    客观的说,目前如果想要从事互联网行业 /大数据方向,选 java/golang/py,目前 C#在这这方面(市场+生态)应该是比较弱(国内来说,国外不清楚)
    如果从事传统行业(医疗 工业 等和设备底层关系较大的)等可选 C#(不代表 C#能全部搞定,一定程度上依赖 c/c++,但是 c#和他们的交互非常流畅,且开发效率较高,同时有成熟的 ui 框架)

    如果是计算机专业,有一定的理论基础的话,学起来应该都快.
    a33291
        36
    a33291  
       2022-07-14 11:01:16 +08:00
    哈哈,单从语言角度来说,的确很多其他语言转 C#都很难受,同时用过这几个就深有体会
    thinkershare
        37
    thinkershare  
       2022-07-14 11:01:48 +08:00
    @leexy 另外 V2EX 这个平台我感觉并不适合文这个问题. 因为这个问题网上已经有了无数的答案, 知乎上这个问题我都看过好多次了,善用搜索引擎. 我怀疑你在水铜币😄😄😄. 我也是闲的无聊...
    thinkershare
        38
    thinkershare  
       2022-07-14 11:05:29 +08:00
    @a33291 哈哈说的是实话. 其它语言的语法糖都它弱了. C#的核心问题还是在生态上. python 的性能实在太差, 除非用来做胶水, 它的性能属于放弃治疗的. 我天天写 python/ts, 越写越爽.
    thinkershare
        39
    thinkershare  
       2022-07-14 11:08:33 +08:00
    @错人了, 不好意思 @leexy , 本来是要 @kklk
    fanqisoft
        40
    fanqisoft  
       2022-07-14 11:38:56 +08:00
    去 b 站上把杨中科老师的.net 视频刷一遍
    timethinker
        41
    timethinker  
       2022-07-14 11:45:42 +08:00
    要我说最好的办法就是直接做一个练手的项目实践一下,在实践的过程中不断的解决问题和优化问题的解法,这样学习效率是最高的,只有亲自动手做过一遍之后,你才能知道个人的学习成果如何,知道该去学习什么东西才能得到更进一步的提升。
    jimmy3780
        42
    jimmy3780  
       2022-07-14 12:00:46 +08:00
    fivestrong
        43
    fivestrong  
       2022-07-14 12:21:50 +08:00 via Android
    timcorey 讲的很好 https://www.iamtimcorey.com/
    Bazingal
        44
    Bazingal  
       2022-07-14 12:29:33 +08:00
    @thinkershare 说到生态,也就比不过 python 、js 、jvm 系了,比起 go 之流的还不是随便碾压?
    wu00
        45
    wu00  
       2022-07-14 12:43:03 +08:00
    - 官方文档完善、权威
    - 语法优雅、特性完善、性能顶尖、IDE 宇宙最强
    - 开源跨平台
    - 版本迭代快、升级平滑
    - 国内社区贡献者偏少
    - 想招齐一个靠谱的 C#开发团队,十分困难
    - 30k 以下的工作很好找,30k 以上几乎没有
    - 对标同行工资偏低,但没有低到离谱;加班相对较少
    - 学习全靠自己,因为你的 leader 大概率也是水货
    - 大厂岗位几乎没有
    Bazingal
        46
    Bazingal  
       2022-07-14 12:45:07 +08:00 via Android
    darknoll
        47
    darknoll  
       2022-07-14 12:49:55 +08:00
    @Bazingal 某些写 java 的这么恨 go 吗?
    Bazingal
        48
    Bazingal  
       2022-07-14 13:04:14 +08:00 via Android
    @darknoll 你从哪里得出我是写 java 的?又是从哪里得出我恨 go 的结论的?
    sunmker
        49
    sunmker  
       2022-07-14 14:51:35 +08:00
    基础入门语法看《 C#高级教程》,特性之类的建议看《 C#图解教程》,因为前者讲的太细了,有些东西初级不是特别需要
    Akiya
        50
    Akiya  
       2022-07-14 15:00:57 +08:00
    @kklk 面向工资编程的话就 Golang/Java/Python 吧
    kklk
        51
    kklk  
    OP
       2022-07-14 15:02:43 +08:00
    @thinkershare 感谢解惑
    onetown
        52
    onetown  
       2022-07-14 15:08:52 +08:00   ❤️ 1
    sinnosong1
        53
    sinnosong1  
       2022-07-14 15:09:46 +08:00   ❤️ 1
    我去年转码,之前做测试,Essential C# 入门,现在抄代码喜欢看看 C# in a Nutshell ,stackover flow,Msdn 。现在在公司写 java 后端,WPF 程序+Avalonia linux 程序。马上网教本科毕业正在用 asp.net core + Blazor 写论文项目。C#确实全能,写起来也舒服,干活也快,资料也多。
    charlie21
        54
    charlie21  
       2022-07-14 19:57:22 +08:00
    不学和学有什么区别
    Fixedsys
        55
    Fixedsys  
       2022-07-28 08:14:52 +08:00
    《 C#图解教程》挺不错的!
    liuguangxuan
        56
    liuguangxuan  
       328 天前
    @Akiya #1 请问一下老哥,为什么感觉 C#的官方文档中超链接来回乱跳,知识点不是那种循序渐进,依次加深。是我阅读的方法不对吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1001 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:25 · PVG 07:25 · LAX 15:25 · JFK 18:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.