乐趣区

关于.net:C-学习经验分享

.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 步的⼯作。

在晚期,我⽤过最好的 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 减少相干的第三⽅库 / 包进⾏测试 , 如 OpenCVSharp

如果你不喜爱⽤命令⾏的⽅式,介绍⼀个官⽅的⼯具 .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.Products
                               where 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

学会使⽤ Nuget NuGet 是 .NET 的包管理器。NuGet 客户端⼯具提供了⽣成和使⽤包的能⼒。NuGet 库是所有包作者和使⽤者使⽤的地方包存储库。你能够通过 NuGet 下载很多不同场景的包进⾏场景应⽤。

像⼀些⼩搭档,在直播提到的爬⾍,这⾥就能够利⽤ Nuget 通过第三⽅的包 Abot (理解更多请拜访) 来实现。

怎么写好 C

每⼀个编程语⾔,都有⾃⼰的编写标准,也是评估好的代码的规范。在官⽅有⾮常好的编码规定倡议⼤家浏览,这对写好 C# 的代码⾮常有帮忙,你也能够多看看 GitHub 上的开源项⽬,也会有很⼤帮忙。

后记

新⼀代的 .NET 很吸引,涵盖了多个应⽤场景。C# 作为⾮常重要的 .NET 编程语⾔,也是⼤家⼊⻔的必修课。心愿⼤家通过该⽂章能把握好学习 C# 的⼀些⼯具,编程技巧以及相干的要点。当然我也心愿各位持续加入 .NET 20 周年的学习挑战赛 – ASP.NET Core 开发。

4 月 6 日 - 4 月 24 日,复制链接 https://aka.ms/CSCdotNETCore 到浏览器,或点击可参加,你能够有机会取得.NET 20 周年周边礼包、.NET 专业书籍,以及.NET Conf China 2022 门票!

相干学习资源

  1. C# 学习
  2. C# Lambda 表达式
  3. C# LINQ 表达式
  4. NuGet 相干常识
退出移动版