【完结】面向零基础新手的 C# 基础知识 23-24

23

这节课,是实质内容的最后一节课。Bob来教授我们什么叫做:

事件驱动的编程。

首先,我们需要明白的是,到目前为止,我们的程序有且只有一个事件:程序加载事件,你看,代码里写的很清楚啊:

static void Main(string[] args)

这节课,Bob讲解了Timer组件,首先先来了解一下基本语法:

Timer atimer = new Timer(2000);

//2000为执行一次的间隔,重载函数之一

▲千万不要把命名空间设置为控件名!血的教训!

然后是添加事件:

 atimer.Elapsed += Atimer_Elapsed;

//在打下+=后会自动出现

接着,由于计时器默认是关闭的,所以:

 atimer.Start();

然后,下方会自动出现要操作的事件:

private static void Atimer_Elapsed(object sender, ElapsedEventArgs e)
{
Console.ForegroundColor = ConsoleColor.DarkGray;
Console.WriteLine("老伙计,这表已经走了{0:HH:mm:ss.fff}",e.SignalTime);
}

当然,想绑定另外一个事件,就再照着原样打一遍就行了。只要名字不一样,想绑定多少都没问题。

想删除,就这么打:

atimer.Elapsed -= Atimer_Elapsed1;

完整代码如下:

namespace Timer计时器
{
class Program
{
static void Main(string[] args)
{
Timer atimer = new Timer(2000);

atimer.Elapsed += Atimer_Elapsed;
atimer.Elapsed += Atimer_Elapsed1;
atimer.Start();
Console.WriteLine("伙计,这恼人蓝色要是太烦,就按Enter键,我保证你会高兴的!");
Console.ReadLine();
atimer.Elapsed -= Atimer_Elapsed1;
Console.ReadLine();
}

private static void Atimer_Elapsed1(object sender, ElapsedEventArgs e)
{
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("老伙计,这表已经走了{0:HH:mm:ss.fff}", e.SignalTime);
}

private static void Atimer_Elapsed(object sender, ElapsedEventArgs e)
{
Console.ForegroundColor = ConsoleColor.DarkGray;
Console.WriteLine("老伙计,这表已经走了{0:HH:mm:ss.fff}",e.SignalTime);
}
}
}

▲翻译的腔调还是挺好玩的,对吧,我的老伙计?

接下来,Bob演示的是基于WPF的编程,这些在UWP01里面讲过了,不再赘述。

24

这节课是Bob给我们一些鼓励的话,破例把字幕全文放上。

祝贺您!您做到了!您完成了本课程,这是一项很大的成就,不要小看自己。当我在查看某个课程的观看次数时,都会看到课程最开始的两三个视频的观看次数数量惊人,然后逐渐减少,而到课程最末尾,您可以看到,真正结束所有课程的人的比例只占到最开始人数的很小一部分。这曾将让我担忧,让我感觉可能需要讲得更吸引人,让大家的兴趣更长久。但是 Microsoft Virtual 学院的同事们打消了我的顾虑,说几乎所有课程都存在这样的问题。所以我认为,大家其实一开始都是希望能够一直坚持下来,学完课程的所有内容,但是因为一些事情发生,让人分心的事情出现,或者是有更重要的事情需要去处理,所有这些都可能造成大家完全终止了学习,可幸的是,您没有停下来,而是完成了全部的学习,而现在您正向着精通 C# 或者至少是进一步学习 C# 的方向顺利前进,并且在此之后能够学习更多有关 .Net 的知识,选择学习 Web、Windows 或移动应用程序的用户界面技术,也可能是了解有关数据库的更多内容、使用 C# 访问互联网上的 API。而我们将在本视频后面部分讨论您自此之后可以学习的各种内容,很快您将可以构建自己的应用程序,无论是为您自己、您的员工或者是今后的员工构建应用程序,无论具体是什么情况,我都祝贺你。我真心鼓励您保持自己的学习劲头,再接再厉,继续每天都进步一点点。因为您知道,每天进步一点点,不管看上去多么微不足道,能让您实现生活中的实质性改变,让您拥有更多的技能。您在正确的方向上迈出了重要的第一步,我为您感到骄傲,这话我怎么说也说不够,我会在本课堂中继续鼓励您。在本课中,我希望能对本系列的课程进行一个总结,并为您提供一些建议,帮助您在今后当问题出现时去找到答案。在您不断构建应用程序和学习 C# 开发人员可能用到的各种 API 的知识时,难免会遇到这些问题。我们还会讨论在互联网上寻求帮助时的正确和错误方式。然后我会就您今后在自学过程中可能希望深入了解的主题提供一些建议。但开始之前,我必须告诉大家,我们在这里谈论的一些内容,尤其是一些更高级的概念,比如那些我表示过您偶尔会遇到,所以我想为您稍加介绍的内容。其中一些可能需要数周、甚至经年累月的思考才能真正接收和消化。我自己就曾经对某些编程概念培训内容冥思苦想了很久,完全将自己的思维沉浸在其中。我们的大脑需要安静的时间来沉思,您需要给自己的脑子时间,让它去发现、去提出各种至关重要的问题,让神经元真正实现关键性的连接才能真正成功地理解。我在十年前意识到了一些事情,那时候我还在试图理解某些内容的大概意思它在什么环境中有效之类的。很多时候,我可能需要读很多书和文章,看一些视频,了解不同的作者对特定主题的看法,最后才能理解其意义,从而真正了解到相关主题到底是什么,它如何能为我所用,而我又能用它做什么,诸如此类的。每位作者对特定主题的观点都会稍有不同,有些时候就能解答我的一些疑惑。所以记住一定不断去进步、不断学习,因为总会有答案。但是最终,我希望您能意识到,您真的没有必要一开始就了解所有事情,或是一开始就非常有成效,在您开始写软件之前,您不需要成为专家。实际上,有些概念必需要等到您具有足够经验之后才会真正被理解。只有您在犯了错误后,您才能总结出某个特定概念适用于什么情况,知道自己可以在某个情形中用到它,从而真正理解为什么应该这么来做。面向对象的编程就是一个很好的示例,还有一些其他示例。我将这节课的名称叫做“下一步怎么做”,我的意图是在两个方面来对此进行解答。首先,结束课程后,每当您遇到问题而且无法解决解决问题以重头再来时,您应该怎么去处理。在您学习和构建应用程序的过程中,您很有可能会遇到一些错误信息,或是一些让人一头雾水的东西,每个人都有可能遇到这样的情况。请不要为此感到烦恼,在我看来,编程之所以是如此富有生机的技能,其原因就在于您能将自己现有的知识与自己总结原因的能力和调查研究的能力相结合,对特定的问题进行研究直到找到相关解决方法,也就是整个学习解决问题的过程。值得高兴的是,Microsoft 以及其他地方有一个很大的开发人员社区,这个社区能够帮助您继续前进,解决掉这类问题。这些开发人员会撰写博文、在各种论坛中回答问题、著书,或者是录制我们这样的视频教程。您可以随时利用这个知识社区,而我要跟您来分享一些有关如何有效使用这些社区的技巧。让我们假设您遇到了问题,您的应用程序出了状况,无法像预期那样运行,也许当您每次试图调试应用程序时,都会跳出错误信息。那么您要从哪里开始来隔离出问题,找出问题的根源所在。首先,我会利用来自错误信息本身的关键短语来进行调查。这一点的重要性怎么强调都不为过。也即是说,利用我可以从中获得的错误编号或者特定的短语加上双引号进行进行搜索,这对我找到解决方法从来都很有帮助。搜索结果跳出来后,我可能会花上 10 到 15 分钟的时间浏览结果中的各种博文或论坛发帖或是 MSDN 网站,以找到可能的解决方法。只要选择的搜索字词正确,我就几乎总能够找到解决方法。我觉得很多新手找不到问题解决方法的原因是,他们不够耐心,或是没能在自己的搜索中使用准确的错误信息,不知道怎样正确进行搜索,而且不愿意花时间来仔细阅读许多内容页面来找到问题的解决方法。我要再次强调一下,请使用您在屏幕中看到的错误信息中的精确语句,加上双引号,能够有助于您查找到相关问题的解决方法。您总能找到一些有人发表过的类似问题,并解释了他们是怎么样解决这些问题的。调查研究至关重要,而作为现代软件开发者应该具备的一项重要技能是必须擅长在互联网上进行搜索来帮助解决遇到的问题。这项技能非常关键。也许您会感觉直接到论坛中去发布一个提问,等待有人来解决您的问题,这种方法似乎更简单。但是我向您保证,这样的做法,相比花时间去查找和定义您的搜索直到找到问题,实际更加耗时。说实话,我几乎从来没有在论坛中去提问,因为我几乎总能通过一个简单的搜索来找出操作中的问题或核心问题所在。当我必须去提问的时候,我会感觉有些尴尬,这也许不是什么好的学习态度,不过我不喜欢给别人带来麻烦,也许有一些更需要解答的问题等待他们去回答。所以我不去问问题,而是自己想办法解决问题。实际上,我很肯定,您所遇到的任何问题之前都有人遇到过,而且他们已经将问题的解答在网上发布过了。您只需要去找到他们的解决方法。如果您逐渐精通了在互联网上进行搜索来解决您的问题,您就能比在论坛上发布问题请他人帮助更快地重新开始。那我们假设您已经做了这样的努力,进行了搜索但没有找到任何适合您的情况的内容。可能在那个时候,您所做过的任何尝试都没能帮助您解决问题,这个时候,您就需要请求帮助了。那没问题。要获得别人的帮助,您需要用一种能够获得解答的方式去提出您的问题,也就是说提问的方式很重要。首先,您在提问时必须具备移情能力,换句话说,您需要为愿意提供帮助的人提供所有必需的信息,让他们能伸出援手,从而确定问题、排查出问题并确定解决方案。这意味着,您首先需要清楚陈述自己的问题。在我看来,有一些您必须做的事情的一个清单,其中有些您可能从来没有想到过,让我来快速介绍一下。首先,您应该把自己的问题发布到对的地方。在特定的论坛中找到正确的类别,或者为自己的发帖加上正确的标签,以便相关人员能够看到您的问题。在一个 Visual Basic 论坛中发布一个 C# 问题就不是什么效果显著的做法,搞不好还会被人批评。第二,您还需要为自己的发帖选择一个简单、清晰的标题,这样才能引起能够提供帮助之人的注意,为大家都节省时间。如果我看到某个论坛发帖的标题名为“求助”,我通常都会忽视它。如果标题是“链接对象查询时出现意向不到的结果”,这就是非常具体的表述了,也许我能提供帮助,因为此人努力去准确陈述具体的问题。因此我会阅读这个提问,看看能不能帮上忙。第三是提供问题的简要概述,并加上准确的错误信息,您所期望的具体效果,以及您所遇到的具体情况说明。说明您希望实现的是什么,但结果却是怎样,而且描述尽量精炼。希望实现的是什么,但结果却是怎样,而且描述尽量精炼。尽量精炼。第四,尽可能提供屏幕截图,最好利用屏幕或图像编辑软件圈出问题部分,让大家重点去看这些与您的问题相关的部分。第五,可能的话,请提供一个代码示例。在发布前确保更改任何需要保密的信息,比如密码之类的东西。没有代码段,很多问题就没办法解决。我有很多次遇到有人写邮件说自己遇到了某个问题,问我觉得应该如何解决。每次我都很头大,因为他们没有提供任何代码。我需要知道您都做了什么才导致这样的情况,这样我可能才能找出您的问题是什么。所以,在可能的情况下,尽量提供您觉得造成问题的代码的代码段。此外您应该谨慎选择您要发布的代码,没什么比看到有人贴上 200 行代码要我逐行去查看更令人沮丧的事情了,何况里面大部分跟遇到的问题毫无关系。我的意思是,您必须自己花点时间来将代码尽量减少到少数一些相关的行。您需要为那些对您提供帮助之人提供帮助,感受到他们的感受,去找出与问题可能相关的代码行。第六,如果某个论坛提供了一些特别的 HTML 标签或小段代码,能够用于设置代码格式或问题的其他方面,让代码能在发帖中突出显示,您一定要加以运用。第七,告诉我到现在为止,您已经做了那些努力来解决这个问题,您的努力是否有任何效果,是否改变了什么,是否有帮助。这些做法是否让您排除了某些特定的可能性。同样,就是去感受那些试图帮助您的读者的感受。这样有助于您更快地找到解决方法。否则大家就会去看那些更清楚明确的问题,不再理会您的提问了。就像那个老笑话:有人说,我的电脑有问题,结果技术人员问,你把电插上了吗?大家说这个技术人员太搞笑,但是他们提这种问题有原因的,因为很多时候人们所寻找的答案就是这是这么明显的,所以不要做这样的人哦。确保您列出了您尝试进行的操作,以及您已经排除了的可能。第八,告诉我您使用的操作系统,Visual Studio 和 .Net Framework 的具体版本,所使用的编程语言,以及应用了哪些升级服务包。也就是任何您认为相关的有助于我帮您诊断相关问题的内容。实际上,这比您可能意识到的更加重要。第九,如果您自己找出了问题的解决方法,这非常棒。也许有人为您提供了一些建议,您根据这些建议进行了调查并最终找出了问题的症结,好极了。但之后,请花点时间,回到您提问的地方来,说明您都采用了哪些具体步骤来解决这个问题。通过这种方式来帮助自己更好地了解问题,因为清楚陈述会有助于您理解问题以及解决方案。而这样做也是为社区贡献自己的力量,让自己成为众多信息的一部分。这样,今后遇到相同问题的其他人就能找到您的发帖,您也因此回馈了社区,正如您现在受益于社区。而且很多时候,这个未来您能帮到的人其实是您自己。我遇到过很多次这样的情况:针对某个问题,我找到了相关的解决方法,而几个月后,我又遇到类似的问题,然后想起自己之前见过这种情况,然后去搜索解决方案,结果我会搜索出自己提供的准确解决方法,是我自己回答了这个问题,在网上找到自己的解答感觉还是不错的,所以您应该回到之前提问的地方,为大家和未来的自己,将所遇到问题的答案发布出来。最后,请务必礼貌待人,因为没有人欠您一个答案,他们什么都不欠您的,如果他们帮助您,绝对都是出于好意。他们是在自己的闲暇时间为您提供帮助,也许那是他们加深自己的理解、帮助自己成长的手段,但同时他们也是帮助您在软件开发方面获得成长,所以您应该用语客气,态度亲切,并且尽可能帮助其他开发人员。我本人确实出售培训内容,但是很多时候我也免费为大家提供培训。我在论坛提问,也常常去提供解答。所以,确保您成为这个社区的一份子并且回馈这个社区。在获得他人帮助和支持的同时提供自己的帮助和支持。您可能想知道去哪里能获得这种水平的支持,去哪里提问。这应视具体情况而言,通常,我建议您访问msdn.microsoft.com,这里我们可以点开看看。输入 msdn.microsoft.com/forums系统可能会根据您所在的地理位置指向某个相应的地址,但基本上您都可以看到很多不同的论坛,您应该去找到具体的技术和语言相关的论坛,或者是在 MSDN 论坛中快速搜索相关关键字。这个网站是由Microsoft 员工以及 Microsoft 最有价值专家即 MVP 共同监管。MVP 通常都是一些非常乐于提供帮助而且知识渊博的人,他们经过 Microsoft 的认证,是根据相关标准获得了资格认证的一些热心人,而这些标准之一就是参与这些论坛。另外还有一个更综合性的地方可供您使用。输入 Stack Exchange,来到 programmers.stackexchange.com这是 Stack Exchange 公司的网站,这里也是一样,可以根据您要查找的信息类型,进入到相关的论坛之中。在我看来,Stack Exchange 稍微有些问题,对于新手而言不够友好,也许当您访问的时候,这种情况已经得到了改善,而我之所以这么说,是因为,他们不仅会对您的提问的方式进行评价,而且如果有人进行搜索来帮助您,然后发现已有比较类似的问题存在,他们通常都会关闭您的提问。所以,您需要遵守他们的规则,在重复提问题之前进行大量的搜索,而且也不要对那些针对您的提问的批评太过介意。再次强调一下,我建议您提问之前进行足够的调查工作,因为我相信您可能遇到的任何问题之前都已经有人遇到过了,您只是需要花时间来找到相关答案。之前我说过了,我会从两方面来回答“下一步该怎么做”这个问题。之前我已经回答了当您遇到问题时您应该怎么做,而现在我要来回答另一个问题:我应该怎么去进行进一步的应用程序和软件开发学习。到现在,您已经掌握了较多的 C# 基础知识,例如 .net 中的 C# 编程语言以及在 Visual Studio 中进行查找等,但是您还有大的空间,去将自己学到的东西用于实践并进一步的成长。所以,无论您想构建哪种应用程序,您都需要基本熟悉一些基本的概念,然后才能继续您的学习进程。首先,我建议您学习诸如 SQL server 的关系数据库的知识。学习如何使用 .net API 的Entity Framework 部分来访问数据库内存储的信息,访问您的应用中的数据。SQL server 和 Entity Framework 都提供了可供您在 Visual Studio 中使用的可视化工具,您可进行拖放,配置设置和选项,所以请花点时间,去了解 API 本身的工具以及Visual Studio 中的可视化工具,这会让您受益匪浅。在掌握这些工具之后,您很快就会希望学习如何去撰写代码,减少对 Visual Studio 中的可视化设计工具的依赖,但这些学习都有助于您尽快的去达到实现更高效率的目标。然后您需要去精通一种呈现技术,它更偏向于一种平台技术,而非简单的用户界面,这样,无论您是想构建Web 或 Windows 应用程序还是移动应用程序或游戏,或者是后端处理,您都可以有众多的选择。比方说您想构建 Web 应用程序,就有几种不同的平台,比如叫做 asp.net Web 窗体的旧式 API,有很多的代码都是在 Web 窗体平台 API 上撰写的。此外还有一个更新的 API,名叫 asp.net core MVC,这两种 API 的区别非常大,我们没有足够的时间来讨论,不过我的网站 DevU 上提供了两者的相关话题内容。还有较早的桌面 API,即 Windows 窗体;还有 Windows Presentation Foundation,一个较新的 API,很多公司用它来构建内部应用,然后还有通用 Windows 平台,曾被用于构建偏消费型应用程序,用于在 Windows 应用商店中销售。此外,还有 Microsoft 近期购买的 Xammarin 平台,也就是在我录制本视频课程期间收购的,用于构建适用于 iOS 和 Android 甚至 Windows Phone 的跨平台应用,还有叫做 Unity 的第三方平台,包括 Unity 3D 和 2D,具体取决于您想构建的游戏的类型,您可能也会想看看用于构建游戏的 Unity。如果您不确定您下一步该怎么做,到底去学习什么,我强烈推荐您从 HTML5、CSS3 和 JavaScript 入手,如果您尚未了解这些内容的话。我在第 9 频道针对这各个主题制作了几个基础系列课程,在我录制本课程时,这些课程也被放上 Microsoft Virtual 学院供大家观看。除了这些内容,我还推荐大家去了解应用程序架构的基本租户,尤其是如何将您的代码分为不同的责任层,不管这具体是什么意思。将您的代码分成多个责任层有助于您构建能够不受到更改影响的应用程序。正如我在本系列课程前面说过的,更改的原因有许多,有可能是业务规则改变,或者是要求改变,现有技术的改变,以及对软件调试报告中的缺陷进行修复导致的更改。但是无论是那种情况,您都可以通过在完善的 API 中将责任封装到各个责任层之间,从而来减轻对代码进行更改带来的负面影响。我在 DevU 上用了很多时间来探讨这个应用程序体系架构,如果您对此有兴趣,请务必去那里看看。但是接下来,您应该进一步了解基本的软件设计模式、策略和技巧,还需要了解一些关键字,有关这些关键字,每一个都能可以用上一整本书或一整个视频系列课程来介绍,我已经提到过的有面向对象的编程,这是一门您需要首先学习的重大主题,如果您能深入去学习面向对象的编程,以及它能如何改变您创建解决方案来解决编程问题的方法,您将向正确的方向迈进一大步。但除那之外,您还需要学习软件开发的原理,这些原理能够指引您以面向对象的方式来撰写代码。其中有一些普遍原理,比如驱进原理,我似乎从来没给过它专门的名称,但基本意思就是不要重复。我说过,粘贴复制时应该谨慎,当您发现自己想在自己应用程序中的多个位置复制粘贴代码,您应该停下来,思考一下我怎么能以重复使用该代码的方法来进行创建。不要重复加入相同代码,而应将抽出的要重复使用的代码放到其自己的方法或类之中,然后从这里来重复使用该代码。另外一个叫做 YAGNI 的原则,Y-A-G-N-I就是“你不会用到”,这个原理的意思是您可能会对您的应用程序体系结构进行一种今后可以实现扩展的设置,但实际您可能不需要这么去做,因为您不会用到。还有一个原理或观念,叫做依赖关系注入,这个原理极其重要,它是一个设计模式,能够引导您构建可换入或换出解决方案的松散耦合的对象。您应该去了解依赖关系注入,它对于使用asp.net core MVC 等来创建某些新型应用程序非常重要,asp.net core MVC 很大程度上依赖关系注入。还有一个原理名为SOLID,S-O-L-I-D,每个字母都代表一个不同的次级原理,它们会帮助您意识到您的应用程序中的面向对象的编程的可能。也就是说,有很多更具概念性质的理念,它们对于代码、语法或工具方面则强调得没那么多。您还应该学习软件开发的过程,有关软件开发和管理软件项目的工作流程。具体而言,您要学习团队工作时需要用到的特定工具和技术,利用 GET 或 Visual Studio online 等源代码存储库或者是团队自己的内部源代码存储库工具来与团队成员分享,执行或获得源代码。您还应该学习构建单元测试,这些基于代码的小测试能在您每次撰写代码时不断测试您的代码。有些人甚至认为您应该首先写出这些小的单元测试,然后再来写那些能够通过这些单元测试的实际生产代码。这样,每当系统中有更改时,您都会看到这个更改都有什么影响,因为您会开始看到这些小的测试失败,这就是名为“测试开发并行”的流程,有些人对这种流程极其推崇,而另外一些则对之嗤之以鼻。你还需要学习敏捷项目管理,敏捷软件开发技术,在用户案例中定义需求,玩一个叫做规划扑克的游戏来决定在特定的迭代或软件构建流程中应包含的功能,使用敏捷看板来管理为团队中的多个软件开发人员分配的任务。您还要学习迭代开发的性质,我已经用过“迭代”这个词,您要去了解迭代是什么,迭代的目标是什么,以及使用迭代的原因。您要学习开发贯穿系统所有责任层的一个关键功能。到现在,我已经跟你们介绍了大概几十个您应该在开始阶段去搜索的不同关键术语,说实在的,如果您要把所有这些术语学完,即使是以非常泛泛的方式去学习,都需要花费好几年的时间,但正如之前说的那样,所幸您不必一开始就了解所有这些概念,也没不必立即就要见成效。是的,要学的东西太多了,但我们的时间很有限,但正因如此,软件开发才这么有趣,这么令人兴奋,因为始终有新东西可学,有新技术可尝试。我在 Microsoft 有些朋友跟我说过心里话,说对于他们而言,要跟上所有这些新东西也非常不易。没人会不学自通,对所有人来说,要跟上这样的速度都不容易,没人是万事通,而都是一点点进步,所以您必须坚持地去学习。一段时间之前,我意识到,我的全职工作并非是为开发人员创作视频内容或培训内容,我的全职工作是学习,而我所制作的培训内容实际上都是我的学习的副产品,我个人对于他人的价值在于我的知识,除那之外,其余的都是我所做的一些主要的工作,无论是为别人构建应用程序,还是制作培训内容。大家对于我的兴趣,都是源于我的知识,我如何应用这些知识都是获取知识的副产品。所以您必须全力以赴去学习,鉴于您正在 Microsoft 虚拟学院学习,我知道您在一定程度上已做到了这点。互联网上有很多很棒的资源,第 9 频道、Microsoft 虚拟学院当然还有我们在本系列中了解到的 MSDN 都是其中的一部分。不过,在我结束本系列课程之前,让我再来“插播”一个广告,请大家访问我的网站,即屏幕上的 Devu.com 的开发人员大学。在上面,我制作了一些专门面向新手的课程,帮助他们尽快入门和掌握,指出我认为他们要在软件开发行业中找到工作所必须要掌握的关键性概念,提供课后练习和测试,更重要的是,还提供多种编码实战,督促大家去撰写,训练自己的编程思维,让您能够找出问题,并为这个问题创建解决方法。所以,有时间的时候请访问 Devu.com。课程已临近尾声,我希望大家觉得这个系列课程有价值,而本课也同样有价值。如果有什么我能帮到您的,都可以告诉我,您可以在 Twitter 上找到我,我有的时候会去那里,可以通过 Facebook联系我,也可以写电子邮件给我。最后,我真诚地祝愿您的事业一帆风顺。能够使用 C# 来进行软件开发是非常令人激动的,我为您感到高兴,好的,感谢观看本系列课程,祝好运。

结语

总之,就是这样,24期的C#教程就告一段落了,下面,我要找回UWP,重新开始学习了!哈哈哈!

——THE END ?——

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据