我的 C# 学习经验分享

article/2025/10/30 6:28:37

 .NET 20 周年的学习挑战赛刚结束了第一阶段, 不知道各位小伙伴参加了没有 ? 有人问现在学习 C# 是不是有点过时 ? 也有人问现在 C# 能做什么 ?更有人问学习 C# 能否找到工作 ? 或者你从不同的专家 ,不同的从业者可以有不同的答案 。但我更关心一个比较基础而且对更多人希望得到解答的问题 - 如何学习好 C# 。 我是一名 .NET 老兵 , 虽然我的技术栈不断拓宽 , 但从来没有放弃 C# 。 希望利用该文章 , 和大家分享一些 C# 学习心得。

学习环境

早期学习 C# , 相信大家都喜欢去 Windows 安装 Visual Studio 或者基于 mono 在 macOS / Linux 下安装 MonoDevelop IDE 。 但 .NET 开源后, 学习 C# 就不仅可以在 Windows , 还可以在 macOS / Linux 下进行学习 , 开发的环境除了 Visual Studio 外 ,还增加了 Visual Studio Code , 还有像第三方的 JetBrains 的 Rider IDE 等 。 实际上学习编程语言除了这些 IDE 外 , 我建议大家使用 REPL 或者 .NET Interactive 来学习 C# , 更为有效 。

REPL

什么是 REPL

REPL(发音 “REP-UL”)是一种编程语言与计算机对话的交互式方式。早期应用在 Python 中, 现在很多编程语言都支持 REPL。 实际上 REPL 做了四个步骤:

  1. Read - 读入用户的输入代码(如输入的 C# 语句)。
  2. Evaluate - 评估输入代码(检查语法 / 了解代码意思)。
  3. Print - 打印执行结果结果。
  4. Loop - 继续交互, 循环 1,2,3 步的工作。

在早期 , 我用过最好的 .NET REPL 是Xamarin 的 Workbooks 。 它不但可以运行 C# 的代码 ,也可以写一些如 Xamarin for iOS , Xamarin for Android , Xamarin Forms 等效果 , 也可以引入一些第三方库实现一些效果。这对于初期开发 ,和跨平台移动应用原型开发有很多的帮助 。

要在 .NET 使用 REPL , 你可以使用第三方的 REPL 工具 , 在终端执行以下命令

dotnet tool install --global dotnet-repl

安装成功后,在终端下输入以下命令就可以进入 REPL 环境了

dotnet repl

进入后,你可以在里面输入任意代码块,来完成运行

当然你也可以在 REPL 内通过 nuget 增加相关的第三方库/包进行测试 , 如 ImageSharp

如果你不喜欢用命令行的方式 ,介绍一个官方的工具 .NET Interactive , 它是非常好用的 .NET 体系下的 REPL 交互式可视化工具。你可以通过在 Visual Studio Code 中安装 .NET Interactive Notebooks插件 。(如果你希望了解更详细的安装方法,以及使用可以阅读我之前写的这篇文章 .NET Interactive环境介绍) 

Lambda 和 LINQ 是 C# 的语法之美

每个语言都有各自的优缺点 , 和各自的应用场景 , 传统的类型表示, 条件 / 循环语句 , 还有类型描述 , 每个语言都有 ,但 C# 我觉得最优雅的地方是 Lambda 表达式 和 LINQ。 这也是我非常推荐入门的小伙伴精读的内容。
 

Lambda 表达式

Lambda 表达式是一小段代码,它接受参数并返回一个值。 Lambda 表达式类似于方法,但它们不需要名称,并且可以直接在方法体中实现。 C# 在 2.0 的版本上,已经支持了 Lambda 表达式 , 比很多编程语言都要早。

C# 中的 Lambda 表达式与匿名函数一样使用,不同之处在于,在 Lambda 表达式中您不需要指定输入值的类型,因此使用起来更加灵活。 ‘=>’ 是用于所有 lambda 表达式的 lambda 运算符。 Lambda表达式分为两部分,左边是输入,右边是表达式。

表达式 lambda,表达式为其主体:

(input-parameters) => expression

如:

语句 lambda,语句块作为其主体:

(input-parameters) => { <sequence-of-statements> }

如:

 如果您打算在代码中使用 LINQ,那么 Lambda 表达式将是您最喜欢的伙伴。 帮助您将代码逻辑包装在更少的行或内联中。

LINQ 语言

LINQ 是一系列直接将查询功能集成到 C# 语言的技术统称。LINQ 也是在 C# 2.0 中诞生 , 应用在 SQL 数据库、XML 文档、以及各种 Web 服务中。 借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。

如:

 我个人比较喜欢用 LINQ to SQL 的语法, 节约了不少写 T-SQL 语句的时间

using (AdventureWorksEntities context = new AdventureWorksEntities())
{IQueryable<string> query = from p in context.Productswhere p.Name == "Reflector"select p.Name;IEnumerable<bool> q = query.Select(c => c.EndsWith("Reflector "));Console.WriteLine("LINQ to Entities returns: " + q.First());Console.WriteLine("CLR returns: " + "Reflector".EndsWith("Reflector "));
}

学会使用 NuGet

NuGet 是 .NET 的包管理器。 NuGet 客户端工具提供了生成和使用包的能力。 NuGet 库是所有包作者和使用者使用的中央包存储库。你可以通过 NuGet 下载很多不同场景的包进行应用 。

像一些小伙伴,在直播提到的爬虫 , 这里就可以利用 Nuget 通过第三方的包 Abot (了解更多请访问 GitHub - sjdirect/abot: Cross Platform C# web crawler framework built for speed and flexibility. Please star this project! +1.)来完成

怎么写好 C#

每一个编程语言 ,都有自己的编写规范, 也是评价好的代码的标准 。 在官方有非常好的编码规则建议大家阅读(C# 编码约定 | Microsoft Docs), 这对写好 C# 的代码非常有帮助 , 你也可以多看看 GitHub 上的开源项目, 也会有很大帮助。


 

后记

新一代的 .NET 很吸引 , 涵盖了多个应用场景 。 C# 作为非常重要的 .NET 编程语言,  也是大家入门的必修课 。 希望大家通过该文章能掌握好学习 C# 的一些工具 , 编程技巧以及相关的要点 。 当然我也希望各位继续参加 .NET 20 周年的学习挑战赛 - ASP.NET Core 开发 。


 

相关学习资源

  1. C# 学习 C# 文档 - 入门、教程、参考。 | Microsoft Docs
  2. C# Lambda 表达式 Lambda 表达式 - C# 引用 | Microsoft Docs
  3. C# LINQ 表达式 C# 中的语言集成查询 (LINQ) | Microsoft Docs
  4. NuGet 相关知识 NuGet 文档 | Microsoft Docs


http://chatgpt.dhexx.cn/article/oeHLf4w8.shtml

相关文章

分享学习语言的经验

在人类所制造的工具中&#xff0c;有的可以将人送上月球&#xff0c;有的可以驾驭原子的火焰&#xff0c;但是只有计算机软件才能透彻的返照出人类的心智。 --《Java与模式》 软件能够返照出人类的心智&#xff0c;那么计算机语言就是我们展现心智的基石。经常在一些论坛上和贴…

分享一些自己的学习经验和技巧

毕业两年多&#xff0c;工作三年多&#xff0c;技术水平也不是什么出类拔萃&#xff0c;万里挑一的地步&#xff0c;从最初的Java工程师&#xff0c;到产品&#xff0c;再到大数据&#xff0c;到最后的运维工程师&#xff0c;研发工程师&#xff0c;短短三年多&#xff0c;总是…

爬虫学习经验分享-------某点评网站

某点评网站爬虫分享----0基础学习&#xff0c;解决反爬&#xff0c;加密&#xff0c;ip代理&#xff0c;封ip“403 Forbidden”等问题。 最近有个调查的项目&#xff0c;其中包含了对于网络数据的爬取。而之前我并没学过网络爬虫&#xff0c;因此我也抱着学习的心态来学习如何爬…

前端学习总结,经验分享,项目经验分享过程

前言 来&#xff0c;和魔王哪吒总结一下&#xff0c;分享一下自己对前端学习总结&#xff0c;经验分享&#xff0c;以及写过的项目经验分享过程。 如果觉得还不错的话&#xff0c;浏览的过程中&#xff0c;需要您&#xff1a; 点赞&#xff0c;分享&#xff0c;评论有钱的捧…

方法教程:一分钟把网易云音乐上的MV/mv视频下载到本地电脑

1、用Google Chrome浏览器把网易云上的MV打开。点击【分享】-【复制链接】-粘贴到浏览器地址栏打开&#xff1a; 2、在视频旁边的空白处右击鼠标&#xff0c;打开【检查】&#xff1a; 3、打开界面后点击【Network】–【All】&#xff0c;然后刷新浏览器&#xff0c;让视频播放…

网易云 计算机,网易云音乐电脑版2.7.4.198336_网易云音乐 - 系统之家

网易云音乐是一款播放、发现高品质音乐的专业音乐播放器&#xff0c;能找到许多小众的品位音乐、歌手&#xff0c;让你在电脑上听CD品质的音乐。网易云音乐是网易旗下主推的音乐播放器&#xff0c;依托专业音乐人、DJ、好友推荐及社交功能&#xff0c;为用户打造全新的音乐生活…

利用requests爬取网易云音乐榜单并下载

最近想爬取网易云音乐的歌单&#xff0c;发现网上很多教程都用Selenium&#xff0c;比较麻烦。因为研究网易云音乐排行榜html码源&#xff0c;发现榜单是iframe动态加载的。用原网址爬取是爬取不到内容的。想用requests爬取的话需要获取iframe的源码。 目录 一、url和请求头分…

JS逆向之网易云音乐

文章目录 1. 目标网站2. 初步分析3. 定位加密参数生成位置4. 编码测试4.1 定义AES加密方法4.2 调用两次AES加密获取params4.3 获取歌曲的url4.4 单曲下载初步测试代码4.5 飙升榜单音乐批量抓取文章内容仅用于学习和技术交流,如有侵权请联系我删除。 1. 目标网站 https://musi…

网易云音乐 For Mac

网易云音乐mac版专门为mac电脑用户使用的音乐播放软件&#xff0c;用户还可以使用网易云账号将电脑和手机上的音乐同步网易云音乐mac版中&#xff0c;使用更加方便。网易云音乐for mac比较人性化&#xff0c;它能根据你平时听音乐的喜好&#xff0c;自动给你推荐音乐&#xff0…

利用 Python 一键下载网易云音乐 10W+ 乐库

如果你常听音乐的话&#xff0c;肯定绕不开网易云&#xff0c;作为一款有情怀的音乐 App&#xff0c;我对网易云也是喜爱有加。虽然说现在都已经是 5G 时代了&#xff0c;大家的手机流量都绰绰有余&#xff0c;但在线播放还是不如本地存着音乐文件靠谱&#xff0c;今天我们就用…

网易云音乐虚化图片html,网易云音乐怎么换背景 背景图片设置方法

网易云音乐作为主流的手机音乐播放器&#xff0c;依托强大的社交功能&#xff0c;从众多播放器中脱颖而出&#xff0c;个性化的皮肤更是为它增加了不少魅力&#xff0c;下面就跟小编了解下具体的设置方法吧。 类别&#xff1a;影音播放 大小&#xff1a;90.81M 语言&#…

JAVA如何用URL下载网易云音乐

1.打开网易云&#xff0c;选择一首歌曲播放&#xff0c;然后按f12 2.找到并点击以.m4a结尾的链接 3.把输入框的链接替换代码里面的URL //1.获取资源地址URL url new URL("https://m801.music.126.net/20201006161345/802c3e2bd0240db619e27a7f1eeffcce/jdyyaac/5608/005a…

使用云函数快速升级网易云音乐等级

关于等级特权&#xff0c;网易云官网有介绍 https://music.163.com/#/level/details &#xff0c;最高级Lv10有100G音乐云盘免费容量 使用分享的脚本是每天自动在网易云音乐刷完300首歌&#xff0c;让你的账号快速升级&#xff08;等级数据每天下午2点更新&#xff09; 一个…

网易云linux版本如何安装包,网易云音乐Linux版提供64位和32位ubuntu16.04安装包

网易云音乐终于推出了官方Linux版本&#xff0c;提供的下载安装包有&#xff1a; deepin15(32位)&#xff1a;http://s1.music.126.net/download/pc/netease-cloud-music_0.9.0_i386.deb deepin15(64位)&#xff1a;http://s1.music.126.net/download/pc/netease-cloud-music_0…

干货,下载网易云课堂和B站的视频

原文网址&#xff1a;https://www.jianshu.com/p/ad20e5a63353 我们在平时的学习中&#xff0c;很有可能会接触 网易云课堂 和 BIlibili 这两个很棒的网站。 有的时候我们在线观看不方便&#xff0c;总是想把网站里面的视频下载到电脑&#xff0c;然后自己闲暇时间进行学习。 方…

EasyRecovery帮你一招找回网易云下载的单曲

科技迅速发展的时代里,人们越来越离不开手机、电脑、平板等电子产品,也更习惯于把重要的音频、视频和图片储存在这些电子产品中了。既然有储存,那就有丢失,大家一定遇到过因误删文件而抓狂的情况吧。不过如今处理误删的情况也完全是小事啦,所谓一物降一物,我们有文件恢复…

网易云API接口运行教程

1.网易云api下载地址&#xff1a; https://neteasecloudmusicapi.js.org/#/ 2.下载或者git clone到本地 3.解压缩NeteaseCloudMusicApi-master.zip 4.在搜索框中输入cmd打开终端&#xff0c;在终端中输入node app.js&#xff0c;服务器已经运行&#xff0c;可以将生成地址输入到…

HC05蓝牙模块(主从一体)简单使用

使用 按住蓝牙模块上的按键&#xff0c;再接通电源&#xff0c;进入AT指令模式&#xff0c;可以进行AT指令设置 引脚连接 PA2&#xff08;TX&#xff09; -RX PA3&#xff08;RX&#xff09; -TX 5V VCC GND …

蓝牙模块—HC-05调试

每次拿到蓝牙模块进行调试时&#xff0c;都会忘记一些细节等信息。因此为了将来能够顺利地调试蓝牙模块&#xff0c;以本文来记录一下调试过程。 调试所需的硬件有HC-05蓝牙模块&#xff0c;USB转TTL模块&#xff0c;杜邦线若干。 首先用杜邦线将HC05与USB转TTL模块正确连接&am…

【蓝牙模块】三款常用的基础蓝牙模块,HC05,JDY-31,CC2541介绍与测试说明

文章目录 一. HC05二.JDY-311.介绍2.测试 二.CC2541 一. HC05 HC05与其他两款的区别是&#xff0c;需要按住RST键进入AT指令模式 一. 上电进入AT模式方法 先按住HC05蓝牙模块上面的RST按键&#xff0c;再给蓝牙模块通电。蓝牙模块上面的LED进入慢闪模式(约1秒钟闪烁一次)&a…