Skip to content
  • 主页
  • 资源下载(试读、源码、勘误)
  • 蕃茄钟
  • C#
  • C++
  • 软件需求
  • Python
  • AI
  • 游戏开发

周靖的博客 <_>

2004-2024

《Visual C#从入门到精通》 第10版

Posted on 2022-12-142025-05-16 By admin 《Visual C#从入门到精通》 第10版有 1 条评论

过去20年,很多事情都发生了变化。为了好玩,我有时会拿起我那本2001年的《Microsoft C# Step By Step》第一版,并感慨自己当年的天真无邪。当然,C#当时达到了完美编程语言的巅峰。C#和.NET Framework在开发界引起了轰动,其反响一直持续到今天。现在,非但没有泯然众矣,反而在开发界的地位变得越来越重要。C#和.NET并不像2001年的反对者所叫嚣的那样是一种只适合单一平台的方法,而是逐渐证明自己是一种完整的多平台解决方案——无论你是为Windows、macOS、Linux还是Android构建应用程序。此外,C#和.NET已经证明自己是许多基于云的系统的首选运行库。否则,Azure怎么可能这么火?

购买链接:京东>> 当当>> 淘宝>> | 台湾博客来>>

配套资源和试读PDF下载: ys168 网盘>> 百度网盘>>

2024.10更新:添加了中文版勘误

2025.5更新:更新了勘误,新增“回复读者来信”,解决读者遇到的问题。


过去,大多数常用编程语言只是时不时地更新一下,往往相隔数年。以Fortran为例,会看到名为Fortran 66、Fortran 77、Fortran 90、Fortran 95、Fortran 2003、Fortran 2008和Fortran 2018的标准。这就是过去55年中的七次更新。虽然这种相对缓慢的变化周期有利于稳定性,但也可能导致停滞不前。问题在于,开发人员必须解决的问题的性质变化很快,他们所依赖的工具最好能跟上步伐,这样才能开发出有效的解决方案。Microsoft .NET提供的正是这样一个不断发展的框架,C#也会相应地更新,从而最好地利用平台的优势。所以,和Fortran相比,C#自首次发布以来经历了快速迭代,仅过去五年内就有六个版本问世,2022年甚至会再次发布C#的一个新版本(注,作者说的是C#11。目前,语言和平台甚至已更新到C#13和.NET 9)。C#语言仍然支持20多年前写的代码,但通过不断对语言进行补充和增强,现在能用更优雅的代码和更简洁的构造来创建解决方案。出于这个原因,本书也要定期进行更新,现在已经是第10版了!

下面列出了C#的进化简史:

  • C# 1.0于2001年亮相。
  • 几年后随着C# 2.0和Visual Studio 2005的问世,语言新增了几个重要特性,包括泛型、迭代器和匿名方法等。
  • 随Visual Studio 2008发布的C# 3.0新增了更多特性,包括扩展方法、Lambda表达式以及语言集成查询(Language Integrated Query,LINQ)。
  • 2010年发布的C# 4.0继续增强,改善了与其他语言和技术的互操作性。新增特性包括具名参数和可选参数,另外还有dynamic类型(指示语言的“运行时”对对象进行晚期绑定)。在随C# 4.0发布的.NET Framework中,最重要的增补就是“任务并行库”(Task Parallel Library,TPL)。可用TPL构建具有良好伸缩性的应用程序,从而快速和简单地发挥多核处理器的能力。
  • C# 5.0通过async方法修饰符和await操作符提供了对异步任务的原生支持。
  • C# 6.0是一次增量式升级,添加了许多有利于简化开发的特性,包括字符串插值(再也不需要String.Format了)、改进的属性实现方式以及表达式主体方法等。
  • C# 7.0~ C# 7.3进一步增强,提高了生产力并移除了C#一些不合时宜的设计。例如,现在属性访问器方法可作为表达式主体成员实现,方法支持以元组形式返回多个值,简化了out参数的用法,switch语句开始支持模式和类型匹配。还有其他许多小的调整,解决了开发人员的众多关切,比如允许写异步Main方法。
  • C# 8.0、C# 9.0和C# 10.0延续这种做法,继续对语言进行增强以提高可读性和帮助开发人员提高生产力。一些主要的新增特性包括record类型,可用它来构建不可变的引用类型;扩展了模式匹配,现在能在整个语言中使用这个特性,而非仅能在switch语句中使用;顶级语句,现在能将C#作为脚本语言使用(不必总是写一个Main方法);默认接口方法;静态局部函数;异步可清理(asynchronous disposable)类型;以及许多其他特性。所有这些都会在本书讲到。

虽然Microsoft Windows是运行C#应用程序最重要的平台,但现在也可通过.NET运行时在其他操作系统(包括Linux)上运行用C#写的代码。这使程序更容易在多种环境中运行。另外,Windows支持高度交互性的应用程序,它们可以进行数据共享和协作,还可以连接云服务。Windows最引人注目的是对UWP(Universal Windows Platform,通用Windows平台)应用的支持。这种应用设计在任何Windows 10或Windows 11设备上运行,无论这些设备是全功能的桌面系统、笔记本和平板,还是资源有限的智能手机和物联网(IoT)设备。熟悉C#的核心特性后,下一步就是掌握如何开发能在所有这些平台上运行的应用。

云已成为许多系统架构中的一个重要元素——从大型企业应用,到在便携式设备上运行的移动应用——所以我决定在本书最后一章重点讨论这方面的开发。 Visual Studio开发环境使这些特性变得很容易使用,大量新向导和增强显著提升了开发人员的生产力。写作这本书给我带来了许多乐趣,希望你的阅读亦是如此!


常见问题解答:

  1. 问题:编译时报告错误:CS8370 功能“递归模式”在 C# 7.3 中不可用。请使用 8.0 或更高的语言版本。
    解决方案:以4.5节“为switch表达式使用模式匹配”为例,用文本编辑器(例如,VS Code)打开项目文件SwitchStatement.csproj,在<PropertyGroup>组中添加下面这一行,然后重新加载项目即可。
<LangVersion>8.0</LangVersion>

如图所示:


勘误

***第1次印刷***

279页,class Horse : ILandBound类定义中的方法名应为NumberOfLegs(),而不是NumberLegs()。感谢COCCloveyou。

167页,步骤7和步骤8的代码中,将new Point(2496, 1664)更改为new Point(1366, 768)。感谢zhiliang。

***第2次印刷***

5页,步骤9第2行最后一个句号前遗漏了一个字母j——将Program.csproj错印为Program.cspro了。感谢知命山人。

20页,步骤2,最新版本的VS 2022修改了模板名称,因此您可能需要选择“UWP空白应用(.NET Native)”模板来创建新项目。感谢赵。

184页,8.2.1节第一行,“可用空条件操作符更简洁地测试空值,使用它需为变量名附加问号(?)前缀。”中的“前缀”应该改为“后缀”。感谢知命山人。


回复读者来信

读者王先生来信:周老师您好,您翻译的(第10版)书上494页Hour + int运算符重载那里,代码在VS2022中报错,应该是代码问题,麻烦您看下,Hour和new Hour(int)相加应该的确无法想加,麻烦老师您看下。

回复:写了一个程序,您看看能理解吗?

// 22.1.2节:重载的操作符
Hour a = new Hour(12);
Hour b = new Hour(3);
Hour Example(Hour a, Hour b) => a + b;
Console.WriteLine(Example(a, b)); // 输出: 15

// 22.1.3节:创建对称操作符
int c = 2;
Hour d = a + c; // 调用了重载的 + 操作符
Hour e = c + a; // 调用了重载的 + 操作符
Console.WriteLine(d); // 输出: 14
Console.WriteLine(e); // 输出: 14

struct Hour
{  
    public Hour(int initialValue) => this.value = initialValue;
    public static Hour operator +(Hour lhs, Hour rhs) => new Hour(lhs.value + rhs.value);
    public override string ToString() => value.ToString();
    private int value;

    // 22.1.3节新增了对称操作符
    public static Hour operator +(Hour lhs, int rhs) => lhs + new Hour(rhs);
    public static Hour operator +(int lhs, Hour rhs) => new Hour(lhs) + rhs;    
}


英文版ISBN:9780137619832

中文版ISBN:9787302617648

分享到:

  • 点击以分享到 X(在新窗口中打开) X
  • 点击分享到 Facebook (在新窗口中打开) Facebook

赞过:

赞 正在加载……

相关

C# Tags:C#, Visual C#从入门到精通

文章导航

Previous Post: 《Windows核心编程》第5版,中文限量版,2022年出版
Next Post: 跨平台机器学习——ML.NET架构及应用编程(Programming ML.NET)

Comment (1) on “《Visual C#从入门到精通》 第10版”

  1. Pingback: 《C#12.0本质论》 – 周靖的博客 <_>

发表回复 取消回复

要发表评论,您必须先登录。

请输入电子邮件来订阅本博客

新文章发布时,您将通过电子邮件接收到通知。平时不会打扰您。

加入其他 53 位订阅者的行列

近期文章

  • 《高质量需求:聚焦于商业价值的20个核心实践》2025年出版 2025-04-15
  • 番茄钟 2025-01-06
  • 《SRE规模化实践手册》 2024-12-30
  • 《大模型编程实践与提示工程》 2024-12-30
  • 《C++编程思想》2025重译版 2024-12-30
  • 《C#12.0本质论》 2024-10-07
  • 《深入CLR》(原CLR via C#)2024修订版 2024-10-07
  • 《Python超能学习手册》 2024-08-14
  • 《Unity 2D游戏开发》和《Unity 3D游戏开发》 2024-08-12

近期评论

  • 《高质量需求:聚焦于商业价值的20个核心实践》2025年出版 – 周靖的博客 <_> 发表在《《需求可视化:22个需求模型及其应用场景》2024年出版》
  • admin 发表在《《学习Python》第6版,2024年出版》
  • 《大模型编程实践与提示工程》 – 周靖的博客 <_> 发表在《在Azure上免费创建OpenAI环境并避开API调用的国家/地区限制:详细教程》
  • jiancheng 发表在《《学习Python》第6版,2024年出版》
  • 在Azure上免费创建OpenAI环境并避开API调用的国家/地区限制:详细教程 – 周靖的博客 <_> 发表在《《大模型编程实践与提示工程》》

本站所有文章归档

  • 2025 年 4 月 (1)
  • 2025 年 1 月 (1)
  • 2024 年 12 月 (3)
  • 2024 年 10 月 (2)
  • 2024 年 8 月 (2)
  • 2024 年 7 月 (1)
  • 2024 年 6 月 (2)
  • 2024 年 5 月 (1)
  • 2023 年 8 月 (1)
  • 2023 年 7 月 (2)
  • 2023 年 4 月 (1)
  • 2023 年 3 月 (1)
  • 2022 年 12 月 (2)
  • 2022 年 5 月 (1)
  • 2022 年 3 月 (1)
  • 2019 年 4 月 (1)
  • 2018 年 11 月 (2)
  • 2018 年 8 月 (2)
  • 2018 年 7 月 (2)

Copyright © 2025 周靖的博客 <_>.

Powered by PressBook WordPress theme

 

正在加载评论...
 

您必须登录才能发表评论。

    %d