V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NorthA
V2EX  ›  程序员

请问学习 C#需要学习哪些东西。

  •  
  •   NorthA · 337 天前 · 7388 次点击
    这是一个创建于 337 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人是一名计算机专业大一学生,做了两年半业余前端,想学习 C#,学习路线应该是怎么的。 查了一些资料,有些人说直接学习.net core ,有些帖子又不推荐学习,没有比较准确的推荐。 求大佬给一些比较细化的推荐。 比如说 C#我了解的有三个方向, 可以做游戏、后端、桌面端 如果这三个都想了解学习,学习的方向应该是如何的,技术栈是如何一步步学习下去。

    例如做前端就得先 html 、css 、js ,然后学习一些 ajax 、nodejs 、webpack 、npm 相关的知识了再去学习框架 vue 、react 这种,然后例如在 vue 框架中又得学习,router 、vuex 、pinia 这种

    求大佬指点迷津。

    70 条回复    2023-12-13 18:01:42 +08:00
    mooyo
        1
    mooyo  
       337 天前   ❤️ 3
    先学 golang/c++/java


    然后校招进微软现学 c#。。。
    cnbatch
        2
    cnbatch  
       337 天前
    在校学生?那就从简单的做起,做个桌面端软件,然后做个简单的网站(用 C# 做)。
    这两项对于打好 C# 的基础很有帮助。
    mooyo
        3
    mooyo  
       337 天前
    其实游戏和 c#没啥关系,至少和.net core 没啥关系,重点应该不在这个上。
    后端国内用 c#的非常少,为了后端千万别学。。。
    客户端我不好说,但桌面客户端感觉已经是死的不能再死的一个岗位。
    mooyo
        4
    mooyo  
       337 天前
    除了你想进微软,我真的挠破头都想不明白你想学 c#的目的在哪....
    jancing
        5
    jancing  
       337 天前 via Android
    有前端经验的话,可以从 Windows Forms 和 WPF 开始,有机会的话找找实习,我是觉得工作中学到的东西比较牢靠,自己在大学校园闷头学受到的正反馈比较少。
    这两个框架你在学的过程中就慢慢知道后端是怎么写的了,毕竟桌面端本来就包含了广义上的前端和后端。
    C#语言不管是入门还是进阶,微软文档都有合适的内容可以查阅学习。版本的话其实无所谓,自己学就看最新版本,工作了就用公司的版本。
    没有游戏领域的工作经验,就不提供建议了。
    参与.NET 社区的话,英语其实挺重要的,C# / .NET 技术栈国外用得多,资料也多。当然国内博客园也是个好去处。
    ybz
        6
    ybz  
       337 天前   ❤️ 1
    游戏、后端、桌面端虽然都是用 C#,但是他们之间的关系大概就跟,锤人和砌墙都用锤子一样。。。。
    Aloento
        7
    Aloento  
       337 天前
    我非常赞同你学习 .NET 系列语言。在国内,除了工控行业( FW ),很少有使用 .NET 的,更别说 Core 了。
    但是,通过 C# 优秀的语言设计思想,足以让你在未来的工作中脱颖而出,这也是楼上一些人没有看到的方面。

    我使用大部分常用语言,它们都是我工作语言。如果我能够自由选择项目的编程语言,我一定会选择 C#。

    学习 C# 你最好通过 MS Learn 开始
    https://learn.microsoft.com/zh-cn/collections/yz26f8y64n7k07?WT.mc_id=dotnet-35129-website

    Unity3D 使用的是 Mono ,怎么就没啥关系了呢?(⚪,启动!)
    hez2010
        8
    hez2010  
       337 天前   ❤️ 2
    语言层面:初期跟着官方文档就行了,其他东西后面遇到了现场查文档。
    游戏:Unity 、godot 引擎都在用 C#,教程一大堆。
    后端:跟着 asp.net core 的官方文档就行了(注意是 asp.net core ,不是 asp.net ),还挺全的。学后端的话 asp.net core 文档中跟 razor 、blazor 有关的内容都跟你没有关系可以直接跳过。
    桌面端:跨平台的话推荐看看 Avalonia ,而 Avalonia 是从 WPF 继承下来的,所以你先学 WPF 的话可以比较无痛地转到 Avalonia 上,因为 WPF 文档要比 Avalonia 全的多,顺带学了 WPF 的话后面上手 MAUI 之类的东西也是轻而易举。不跨平台的话那就 WinUI 3 之类的。

    另外就是英语得好,毕竟 C# 的主要社区不在国内,文档上也是英文的更准确。

    至于前面有个劝退让你学 golang/c++/java 的,只能说你学会了 C# 的话 Java 上手就会,golang 更是看一眼就能开始写代码,只不过这个时候你会因为胃口变叼了写 Java/golang 的时候会觉得很不舒服,要么太繁杂要么太原始。
    至于 C++ 的话,无论你学什么其他语言都推荐单独学一下 C++ 的。
    NorthA
        9
    NorthA  
    OP
       337 天前 via Android
    @cnbatch 这个在学习的过程中肯定会有的 #2
    NorthA
        10
    NorthA  
    OP
       337 天前 via Android
    @mooyo 其实学 C#不一定是为了工作,目前写代码来对我个人来说还算得上是一种娱乐,我很享受学习编程的过程,前面做私单的时候刚好给我遇到过一家做 C#后端的公司,谢谢哥你的说明
    loken2020
        11
    loken2020  
       337 天前
    推荐两本书《 C#入门经典》《 C#高级编程》
    NorthA
        12
    NorthA  
    OP
       337 天前 via Android
    @jancing 谢谢指导,那还有个问题请问一下您,就是 winforms 和 wpf 这两个桌面端在实际开发过程中,哪个用的更多一些,或者是什么样子的情况需要用到 wpf 或者是 winforms #5
    NorthA
        13
    NorthA  
    OP
       337 天前 via Android
    @Aloento 学习 c#我一般是哔哩哔哩的视频结合微软的文档,直接看文档有些地方看不太明白😢
    NorthA
        14
    NorthA  
    OP
       337 天前 via Android
    @hez2010 😀这真的是说到我想要的点上了,谢谢您
    NorthA
        15
    NorthA  
    OP
       337 天前 via Android
    @loken2020 好的,谢谢,正好今天双十二拿下🤗
    jimmy3780
        16
    jimmy3780  
       337 天前
    @mooyo #3 跟游戏其实是有关系的,Unity 近几年的版本将 C# 作为了唯一的语言。
    dartabe
        17
    dartabe  
       337 天前
    最近在学 .Net core 语法就不说了 和 Typescript 太像了

    博客园的很多教程是最好的 比大部分英文视频博客都好很多
    leegradyllljjjj
        18
    leegradyllljjjj  
       337 天前 via Android
    @dartabe 因为这两个语言的架构师好像是同一个人
    bthulu
        19
    bthulu  
       337 天前
    会了 typescript, 自然就会 C#, 会 C#自然就会 java, 这三个你都会了, golang 自然也是信手拈来
    jgh004
        21
    jgh004  
       337 天前
    《 c#21 天入门到精通》🤪
    xuanbg
        22
    xuanbg  
       337 天前
    我记得自己当初学 C#大概是看了一份 20 多页的 PDF 文档就会了,可惜找不到了。
    lyusantu
        23
    lyusantu  
       337 天前
    学 C#就先下载一个 Visual Studio
    学会 C#然后做做上位机也是好的
    klo424
        24
    klo424  
       337 天前
    工作向的话,建议先学 WPF 或者 ASP.NET CORE ,可以直接学,就看官方的文档即可。再学点数据库的知识就可以干活了。
    omgr
        25
    omgr  
       337 天前
    才大一,专注一点整基础,搞底层,C# 什么时候学习都不晚。基于项目而非学习语言本身。
    yefuchao
        26
    yefuchao  
       337 天前
    @dartabe 同一个作者
    huangcjmail
        27
    huangcjmail  
       337 天前
    大一做了两年半前端?高中就开始学编程了?
    deali
        28
    deali  
       337 天前
    推荐一下我的开源 .NetCore 项目,配套了一系列的开发笔记记录本项目开发过程,可作为 .Net Core 入门项目学习~

    https://github.com/Deali-Axy/StarBlog
    ming159
        29
    ming159  
       337 天前   ❤️ 2
    计算机语言本身就是一种逻辑的描述工具. 无非就是 变量,条件判断,循环,函数,类,对象,功能块. 这些知识.
    但是不同的方向会依赖特定领域的知识.

    1. 游戏: 我仅仅了解过概念,坐标系的处理,物理引擎,动画渲染等,还是比较杂的.

    2. 后端: 基本上是围绕 Http 协议展开+缓存+数据库+服务治理,捎带一些运维的知识(也或许得负责运维...)

    3. 桌面端:避免不了 GUI 的开发,这点与前端类似.甚至概念都类似. 但是会涉及到一些多线程,文件处理,通信处理,数据库.

    以上三个领域都有其他语言可以实现,且领域知识就是一套. 所以更应该的是学习领域知识.而不是纠结语言上怎么学
    mmdsun
        30
    mmdsun  
       337 天前   ❤️ 1
    支持的方向很多 你先选基础至少 再选一个方向即可。我是建议游戏开发

    https://dotnet.microsoft.com/zh-cn/
    ming159
        31
    ming159  
       337 天前   ❤️ 7
    @mooyo C# 在工业领域有着绝对的优势. 很多设备都是 winform 拖拽的一个桌面程序与设备通讯,单机运行. 完成数据采集,记录, 甚至控制. 早先很多工业软件和组件都是基于微软的 COM 技术,且 winform 的拖拽开发个界面极其简单.导致很多电气工程师身虽然不是软件出身,但是依据厂商给出的范例,照葫芦画瓢,拖拽个程序就能跑.

    这就体现出 C# 的低门槛,且强大. 因为设备一般都是 7x24 小时运行,程序可能几个月不关. 而 c#能让"面向对象"都不懂的人,写出稳定运行几个月的程序.

    另外我是因为工作需要才被迫使用 C#,一开始也是认为这是上古语言了.....直到使用一段时间后,嗯..真香!.
    C# 语言本身很多特性都是很优秀的,LINQ,委托,操作符重新,dynamic 类型,再就是各种语法糖. 很多其它语言津津乐道的小特性在 c#早有实现.
    afirefish
        32
    afirefish  
       337 天前
    享受编程,建议学习 C#.
    途径微观官方文档,我就不列了。上面已经有大佬给出了。

    为了工作,不建议学习 C#。
    Kuotier
        33
    Kuotier  
       337 天前   ❤️ 1
    leoskey
        34
    leoskey  
       337 天前
    我个人的学习历史,C# Console -> SQL Server -> WinForm -> WebForm -> ASP.NET -> ASP.NET MVC 。

    1. .NET Framework 与 .NET Core 基础功能差异并不是很大,两者想 .NET Framework 3.5 到 .NET Framework 4 的版本升级。如果想学习 asp.net core 那就得 .NET Core

    2. 做游戏可以在学习了解 C#语法后,直接去学 Unity 或其它支持 C#与的游戏引擎。

    3. 后端 与 桌面端,微软提供了 WinForm ,WPF ,WebForm ,ASP.NET

    4. 当你有更高的需求后,你自然就会了解到多线程等高级概念
    zggsong
        35
    zggsong  
       337 天前
    作为一个误打误撞上班才写 C#的人,我的感受就是从嗤之以鼻到真香。
    txhwind
        36
    txhwind  
       337 天前
    .net core 已经是整个 .net 转型的方向了。可以先学习 C# 设计优秀的语法,然后用它完成一些课程作业。写过好代码就自然会对坏代码产生抵触,对培养编程素养很有帮助。
    框架方面就见仁见智了,说实话 MS 提供的框架一般都很易用,但在行业中应用偏少。可以多了解,但不必深入。

    职业发展方面,建议重点关注 [内功] 和 [领域知识] ,语言只是将你的素养产出成商品的一种媒介而已
    kriko
        37
    kriko  
       337 天前
    CLR via C#
    这本书狠狠的读完,不论是做游戏客户端还是服务器都用到
    虽然版本低了但是价值还在
    X2031
        38
    X2031  
       337 天前
    C#基础语法、linq 、一款 ORM 、网页端就看.net core 客户端就看 winform 或者 MAUI 然后再掌握下常用类库的用法。剩下的就是多做点东西
    pkoukk
        39
    pkoukk  
       337 天前
    c#只是一门语言,具体做什么有不同的生态,分别有自己的框架
    你可以先从学语言开始,然后根据需求接触不同的需求,再去了解
    NorthA
        40
    NorthA  
    OP
       337 天前 via Android
    @huangcjmail 是啊,高中就接触了,靠着前端做做外包赚点外快
    NorthA
        41
    NorthA  
    OP
       337 天前 via Android
    @deali 谢谢推荐
    jtwor
        42
    jtwor  
       337 天前
    NorthA
        43
    NorthA  
    OP
       337 天前 via Android
    统一谢谢各位大佬的回复,我都有看,很感谢各位大佬的推荐和指导
    idragonet
        44
    idragonet  
       337 天前
    看工作需求 需要什么学什么!
    OBNtHBZY3N3lxGVT
        45
    OBNtHBZY3N3lxGVT  
       337 天前
    我是自学的 c#,工作也不是程序员,回答的可能不专业
    首先 winform 和 wpf ,虽然都能做桌面端软件,但是如果只是开发一些小工具给自己用或者给同事用,winform 更快一点,wpf 不是不行,但他还是相对麻烦了点,具体有啥大区别我不专业,只是体感如此罢了

    你做游戏取决于你会去什么公司,目前行业里大部分是 unity ,用的是 c#语言开发,如果你想接触虚幻 4 、5 那就得 c++
    游戏服务器后端也取决于你去什么公司,公司用什么技术栈,目前上海这边 golang 、c++多一点

    网站前后端不知道,但是看上去国内前端是比较少 c#的,大部分都是什么 vue 啊,react 这些吧?
    czyt
        46
    czyt  
       337 天前
    49 年入国军
    RainyH2O
        47
    RainyH2O  
       337 天前
    直接找个想做的东西,建个项目直接开写,不知道怎么写就开 ChatGPT 问,它告诉你啥不懂的 API 就开官方文档看一下,做出一个玩意来就入门了。
    shijingshijing
        48
    shijingshijing  
       337 天前
    @IMengXin 这个真不错,不过好像缺少了容器相关的。
    myesn
        49
    myesn  
       337 天前
    可明确告诉你,C# 能做的方向太多了,不同方向的岗位要求的完全不一样,比如有些要求做工业客户端只要会 WPF 的,有些是要网站可能要微服务还要熟悉云厂商的各种云产品,有些做游戏的要会 Unity ,当你选择了一个方向后,你的就业岗位就基本上只能在某一类型下找,基本不可能跨类型找,如果你说全都学完,可以,完全没问题
    Brodess
        50
    Brodess  
       337 天前
    @NorthA #12 物流行业 wms tms winform 以及一些老医院的桌面端 his 系统,wpf 的话一般是作为前端调用 c++的算法(医疗行业)或者是工业,半导体,有部分基金公司需求开发桌面端,winform 比较老了,还有一部分国产信创使用 wpf+ava 框架开发跨平台客户端,在下半年上海 wpf 的岗位还是挺多的
    Allvirus
        51
    Allvirus  
       336 天前
    学 C# + 前端 在哪你都能混口饭吃
    crazytudou
        52
    crazytudou  
       336 天前
    作为一个现在还在用 C#工作的人和你说说:
    如果你想就业,别学 C#,学第一个开发语言找好就业工资高的(向现实看齐),国内 C#工作真不好找,除非你愿意在小公司之间流连。
    如果不为了工作,只是想学,那先学桌面开发(开发 winform 要懂的东西少,入门容易),然后再学数据库,等懂这两个,你就能做点东西了。然后再学点 html/css/js/vue ,学点 mvc ,可以用做做网站了。 后端、桌面端,等你入门了就知道是一个东西。
    游戏是另外的东西,虽然有 C#语言开发。
    huntagain2008
        53
    huntagain2008  
       336 天前
    我一个非计算机专业,小白用户,到了 35 岁的年龄,当时网友给我的回复是:

    "猜测楼主是做 c#一类的吧。很接近于 wpf wcf 开发工作,这种开发工作这么低薪资,我倒不觉得惊讶,只是疑惑楼主为什么不早做准备,很多制造业的程序员薪资很难提上去,所以年龄大了去制造业养老这种想法,我觉得并不靠谱"

    "我也觉得,有点像我一个同学,毕业后一直在一个做软件外包的日企做一些机械化的事情有个 4 、5 年(二线城市 2012 年开始工资一直是 4 、5k ),新来的实习生都劝他这个没前途赶紧换工作。。。后来被我劝动了,现在好多了
    除非家里有矿、收租,不然真的建议马上换个工作吧"

    (我对他们的回复的理解是:不是说 C#不好,要找更好的工作岗位,还需要其他的技术)
    beyondstars
        54
    beyondstars  
       336 天前
    需要驱动力或者兴趣,想想你希望用 C# 解决什么问题,为什么是 C# 而不是其它语言,搞明白了这一点就容易学下去了,BTW 微软官网都有比较细的文档。
    jianghu52
        55
    jianghu52  
       336 天前
    从头看到尾,没有人说现在已经没有啥.net core 了么。从。net6 开始,全部兼容.net core 了。直接学.net 6 就好了。就我个人而言,学.net 不是不行,但是如果要是真从找工作的角度,从 java 入门会更好一点。
    1.大部分讲设计概念,包括算法的,还是 java 版本居多。
    2.java 跟 C#的类似度很高,如果 java 学会了,转.net 会很轻松。
    stardew
        56
    stardew  
       336 天前
    刘铁猛老师的 c#课程,非常好
    BeanGo
        57
    BeanGo  
       336 天前
    游戏从业者来说下,Unity 用的确实是 C#。但是其实一般 C#用的也不多,往上层说,业务层基本也是用 Lua 、TS 来做热更新,也有 C#的热更新方案,但用的项目比较少;往底层说,Unity 引擎本身也是 C++引擎,只是给 C#暴露了一些接口,另外就是一些上层的包是用 C#写的,如果想做引擎相关的内容,比如去入职 Unity 的话,C++感觉是更重要的。C#的语言特性感觉只是最基础的,如果想做游戏的话,还是更多的要熟悉游戏引擎相关的内容
    StoneHuLu
        58
    StoneHuLu  
       336 天前
    我是做.net core 后端这块 5 年了,我正好想抽空教人写代码,楼主要是不嫌弃的话可以加我 qq 569812422 所有.net core 主流 web 我基本都接触过,目前工作内容是.net core 基于 grpc 的微服务,devops 也懂点。
    luckrnx09
        59
    luckrnx09  
       336 天前
    刚入行时干过 2 年多 .NET Core 开发,由于就业环境不理想,后来转前端了。
    .NET (本回复中都特指 .NET Core ) 是一个平台,VB 、C#、F# 三种语言都运行在这个平台中,C# 是其中最受欢迎的一员,存在感最强,许多人会把 C# 和 .NET 划等号。
    C# 是语言基础,用它只能写控制台应用程序。
    学完 C# 之后,根据你想从事的方向,可以继续学习,然后做许多事情(桌面端、游戏、移动端、上位机、Web 等),我只做过 HTTP 服务端的开发,也就是俗称的 .NET Core ,也就是 ASP .NET Core 。(微软总是把这些名字搞得很复杂 😞)

    但是,楼主以后想从事 C# 开发的话,两点建议:
    1. 考虑你想做哪个方向的开发
    2. 看看招聘网站上的岗位多不多(注意招聘网站上的 C#、.NET 、dotnet 是同义词)

    如果只是希望学一门后端语言让成为全栈工程师的话,我觉得在 AI 时代,学 Python 、Go 都是不错的选择。

    最后推荐两份资料:
    1. ASP.NET Core Roadmap: https://roadmap.sh/aspnet-core (通过它了解你需要学哪些内容)
    2. 我昨天刚发布的《 JavaScript 工程师的 Python 指南》电子书: https://github.com/luckrnx09/python-guide-for-javascript-engineers
    ggvoking
        60
    ggvoking  
       336 天前
    单从语言层面来说 C#学起来很快就能上手,我是大三开始搞 Unity ,也没刻意学过 C#,有一些 C++/java 基础就是直接上手就可以写,语言方面就是熟能生巧。而做游戏、后端、桌面端是不同的方向都需要花时间掌握,急不得。
    如果是想做 Unity 开发方向,基本上全 C#,而像 Lua 会越来越少,因为主流开始走 HyBridCLR 的 C#热更方案。还是吃 C#熟练度的,因为要考虑性能,特别是 GC 很影响游戏体验
    游戏开发的方向也有挺多的。如果只是基础向的话,还是跟着教程学习吧多做案例,新手就了解些基础的组件操作,UI 界面。
    bianhui
        61
    bianhui  
       336 天前
    c#==进厂。
    如果还是大一的话,建议 golang ,python ,然后辅助学习 c++,java ,rust ,js 。别把语言限制的太死,语言都有共同性的。熟练掌握一门语言,对其他语言入门提升很大。到实习前,做好规划就行。现在变化太快了,提前入坑没用。但是虽说就那样,如果学校不错有考虑考研的话,人工智能是比较学习方向。
    idragonet
        62
    idragonet  
       336 天前
    @BeanGo #57 Unity C#岗位算了吧,去人才网站搜索就知道答案了。
    idragonet
        63
    idragonet  
       336 天前
    我是 10 多年的 C#开发,C#岗位首先基本都是传统行业了( C#在互联网行业是非主流语言),如果希望 2-3W 月薪请出门右转。 如果希望 1W+ 安安稳稳一份传统行业的工作可以的。
    SWALLOWW
        64
    SWALLOWW  
       335 天前
    @StoneHuLu 收费吗?收费的话可以旁听吗- -
    SWALLOWW
        65
    SWALLOWW  
       335 天前
    其实我觉得你可以从一个方面入手,比如
    目标 1 开发个桌面软件
    目标 2 这个桌面软件用 cs 架构使数据能保存
    目标 3 开发个 webapi 数据服务
    目标 4 桌面软件接入服务
    目标 5 改用 blazor 变成跨平台应用
    StoneHuLu
        66
    StoneHuLu  
       335 天前
    @SWALLOWW #64 不收费 纯粹是找个人摸鱼时候聊天_(:з」∠)_ 菜鸡教教大学生还行 同行只能说是互勉
    mushRoomHunter2
        67
    mushRoomHunter2  
       335 天前
    推荐油管上的 raw coder ,讲的非常深入浅出
    SWALLOWW
        68
    SWALLOWW  
       335 天前
    @StoneHuLu #66 dGlhbmNhaTQ2NTI= 大哥,我的
    StoneHuLu
        69
    StoneHuLu  
       335 天前
    @SWALLOWW #68 不好意思不咋用微信。。基本只用 qq
    xuld
        70
    xuld  
       335 天前
    我可线上教,不收费,但有作业,联系方式可发我邮箱 xuld#xuld.net
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5634 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 06:44 · PVG 14:44 · LAX 22:44 · JFK 01:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.