请教一下各位大佬,我想入门 C#,有没有教材书籍推荐一下 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
kklk
V2EX    程序员

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

  •  
  •   kklk 2022-07-13 17:48:28 +08:00 8156 次点击
    这是一个创建于 1191 天前的主题,其中的信息可能已经有所发展或是发生改变。
    谢谢各位大佬,如果有视频教程就更好了
    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#,学了没卵用
    ONEO666
        24
    ONEO666  
       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  
       
    不学和学有什么区别
    Fixedsys
        55
    Fixedsys  
       2022-07-28 08:14:52 +08:00
    《 C#图解教程》挺不错的!
    liuguangxuan
        56
    liuguangxuan  
       2024-02-04 10:53:37 +08:00
    @Akiya #1 请问一下老哥,为什么感觉 C#的官方文档中超链接来回乱跳,知识点不是那种循序渐进,依次加深。是我阅读的方法不对吗?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     960 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 22:36 PVG 06:36 LAX 15:36 JFK 18:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86