【C# Personal Handbook】开篇

博客已提更一年多了,这段时间里,发生了很多事情,也让我对C#更加依恋,所以我决定重新更新博客,以自己的实践经验梳理C#的技术脉络,也欢迎大家手下留情,耐心指点,让我们共同进步吧!

C# 简介

6b4a7d9a6f716992e38cfbdda71c6266.png

C#(音同see sharp)是一种通用的多范式编程语言。C# 包括静态类型、强类型、词法作用域、命令式、声明式、函数式、泛型、面向对象(基于类)和面向组件的编程学科。
C#编程语言由微软的Anders Hejlsberg于2000年设计,后来于2002年被Ecma(ECMA-334)和2003年批准为ISO/IEC(ISO/IEC 23270)的国际标准。微软推出了C#以及.NET Framework、和Visual Studio,两者都是闭源的。当时,微软没有开源产品。

四年后,在2004年,一个名为Mono的免费开源项目开始了,为C#编程语言提供了一个跨平台编译器和运行时环境。

十年后,微软发布了Visual Studio Code(代码编辑器),Roslyn(编译器)和统一的.NET平台(软件框架),所有这些都支持C#,并且是免费的,开源的和跨平台的。Mono也加入了微软,但没有合并到.NET中。

截至2022年7月,该语言的最新稳定版本是C# 10.0,于2021年在.NET 6.0中发布。
C# 11以及C# 7.0已在快马加鞭地赶来。
C#在语法上与Java非常相似,对于了解C,C++或Java的用户来说上手C#会很容易。

为什么选择 C#

  • 易于上手:C#是一种面向对象的语言,它为程序提供了清晰的结构,并允许代码被重用,从而降低了开发成本。它与其他流行的编程语言,如C,C++和Java,因此对任何人来说都很容易上手。

  • 广泛用于开发桌面和 Web 应用程序:C# 广泛用于开发 Web 应用程序和桌面应用程序。它是桌面应用中所使用的最流行的语言之一,如果有人想创建基于Microsoft应用程序,C#将会是首选。

  • 社区:C#社区正在变得越来越庞大,尤其是外国社区。

  • 游戏开发:C#被广泛用于游戏开发,并持续占据主导地位。C#与Microsoft集成,天然拥有庞大的目标受众。C#的垃圾自动回收,接口,面向对象等,也使C#成为一种流行的游戏开发语言。

  • 其他:C#是由C和C++衍生出来的一种安全的、稳定的、简单的、优雅的面向对象编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。

da36dcd9921d2461bae760a2988a6eed.png

C# 应用范围

  • Web应用程序

  • 桌面应用程序

  • 数据库应用程序

  • 游戏

  • 移动应用程序

  • VR

  • 物联网

  • ……

17929f142b9326bc7f18e0c9067522c0.png

收藏系列

  1. 常用开发工具 本地IDE

  • 宇宙第一IDE - > Visual Studio系列

    • 常用插件:

      • Resharper

      • Codemaid

      • GhostDoc

      • Highlight all occurrences of selected word

  • Jetbrains Rider Online IDE

  • GeeksforGeeks ide

  • CodeChef ide

  1. 常用文档和链接

https://docs.microsoft.com/zh-cn/dotnet/
https://dotnet.microsoft.com/zh-cn/
https://github.com/dotnet/runtime
https://github.com/dotnet/roslyn
https://github.com/dotnet
https://zh.wikipedia.org/wiki/C%E2%99%AF

……

  1. 质量较高的开源案例

https://github.com/nopSolutions/nopCommerce
https://github.com/kgrzybek/sample-dotnet-core-cqrs-api
https://github.com/kgrzybek/modular-monolith-with-ddd
https://github.com/vietnam-devs/coolstore-microservices
https://github.com/dotnet/orleans
……

附录 C#语言史

f07653c11873946adc7adfda9dc02dc1.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

canvas特效代码详解(2)

canvas是一个就基于像素的画图h5元素。 利用canvas做一个如下描述所示的动态图形&#xff1a;当鼠标点下去时开始绘图&#xff0c;在鼠标结束时完成一个矩形&#xff0c;当再一次点击时重复第一次的绘图步骤。 1 <!DOCTYPE html>2 <html>3 <head>4 …

阿里云三维可视化使用初体验

title: 阿里云三维可视化使用初体验tags: 物联网开发BIMcategories:物联网本文主要的目标是使用阿里云的云产品 - 物联网套件三维可视化 开始 准备工作 进入下载页面下载页面&#xff0c;点击“模型编辑器下载”安装模型编辑器下载安装完毕&#xff0c;启动模型编辑器下载&…

同时绑定onpropertychange 和 oninput 事件,实时检测 input、textarea输入改变事件,支持低版本IE,支持复制粘贴...

实时检测 input、textarea输入改变事件&#xff0c;支持低版本IE&#xff0c;支持复制粘贴 检测input、textarea输入改变事件有以下几种&#xff1a; 1、onkeyup/onkeydown 捕获用户键盘输入事件。缺陷&#xff1a;复制粘贴时无法检测2、onchenge缺陷&#xff1a;要满足触发条件…

hp laser103 属性没有配置项_(常见解决方法)UEditor报错“后端配置项没有正常加载,上传插件不能正常使用”...

&#xff08;常见解决方法&#xff09;UEditor报错“后端配置项没有正常加载&#xff0c;上传插件不能正常使用”_向来萧瑟也无畏-CSDN博客​blog.csdn.net报错信息详见此文的“排错过程&&错误信息”→ueditor无法上传图片_向来萧瑟也无畏-CSDN博客3种解决方法1.大小写…

WinForm(十二)画图

在.NET中&#xff0c;画图主要是通过Graphics类实现的&#xff0c;这个类主要通过两类方法完成画图&#xff0c;一类是DrawXXX&#xff0c;画各种线条图形&#xff1b;另一类是FillXXX,用各种形状&#xff0c;填充各种图形。Graphics是画板&#xff0c;Draw各个方法是各种盏笔&…

从4个方面简单介绍SaaS

你了解什么是SaaS吗&#xff1f;SaaS有什么优势&#xff1f;选择SaaS平台要注意哪些要素&#xff1f;在这里&#xff0c;怡海软件将针对这些问题进行简单介绍&#xff1a; 什么是SaaS&#xff1f;SaaS是Software-as-a-Service&#xff08;软件即服务&#xff09;的简称&#xf…

腾讯的一笔画游戏--巧妙解法

根据这个图形我们可以发现图中的规律。 所有数据的和 所有边长的和-最后一个形状的一个边-除最后一个边之外所有边的一半。 知道了这个规律后我们就很容易去实现代码了&#xff1a; 这里的解决关键点为——“余弦定理”&#xff0c;因为角度我们可以用&#xff08;n-2&#xf…

Map value类型不同的写法

Map value类型不同的写法 Map<String, Object> accountMapnew HashMap<String, Object>(); int userId data.get("userId").getAsInt(); int accType data.get("accType").getAsInt();String name data.get("accType").getAsStr…

mysql中局部变量说法正确的是_mysql全局变量和局部变量

全局变量和局部变量在服务器启动时&#xff0c;会将每个全局变量初始化为其默认值(可以通过命令行或选项文件中指定的选项更改这些默认值)。然后服务器还为每个连接的客户端维护一组会话变量&#xff0c;客户端的会话变量在连接时使用相应全局变量的当前值初始化。举一个例子&a…

Web应用架构-Full-text Search Service

Elasticsearch转载于:https://www.cnblogs.com/zhitianji/p/9728016.html

终于找到你!如何将前端console.log的日志保存成文件?

本篇文章来自一个需求&#xff0c;前端websocket会收到各种消息&#xff0c;但是调试的时候&#xff0c;我希望把websoekt推送过来的消息都保存到一个文件里&#xff0c;如果出问题的时候&#xff0c;我可以把这些消息的日志文件提交给后端开发区分析错误。但是在浏览器里&…

基于 .NET 6 开发的开源远程终端工具

你好&#xff0c;这里是 Dotnet 工具箱&#xff0c;定期分享 Dotnet 有趣&#xff0c;有用的工具&#xff0c;不要忘记关注。今天介绍一个非常实用的工具 mRemoteNG&#xff0c;这是一个基于 .NET 6 开发的远程终端软件&#xff0c;开源免费&#xff0c;不用担心版权和软件费用…

mysql 行列转换 动态_mysql 行列动态转换的实现(列联表,交叉表)

(1)动态&#xff0c;适用于列不确定情况create table table_name(id int primary key,col1 char(2),col2 char(2),col3 int);insert into table_name values(1 ,A1,B1,9),(2 ,A2,B1,7),(3 ,A3,B1,4),(4 ,A4,B1,2),(5 ,A1,B2,2),(6 ,A2,B2,9),(7 ,A3,B2,8),(8 ,A4,B2,5),(9 ,A1,…

第六次作业—例行报告

本周PSP 进度条 代码累计折线图 博文累计折线图 本周饼状图 转载于:https://www.cnblogs.com/zej87/p/7738895.html

Tomcat7/8开启WebDAV的支持

WebDAV是一种超文本传输协议&#xff0c;Tomcat默认是支持WebDAV的&#xff0c;且默认为禁用状态。 更多详细信息&#xff0c;请参考&#xff1a; https://zh.wikipedia.org/wiki/WebDAV http://www.webdav.org/ 开启步骤如下&#xff1a; 1、在Tomcat的webapps目录下新建webda…

算法复杂度分析(下)

前一篇文章算法复杂度分析&#xff08;上&#xff09;讲述了复杂度的大 O 表示法和几个分析原则&#xff0c;这篇文章我们来讲讲另外几种复杂度&#xff0c;最好情况时间复杂度&#xff08;best case time complexity&#xff09;、最坏情况时间复杂度&#xff08;worst case t…

免费分享一些.NET Core比较优秀的社区资料和微软官方资料

这次小编所分享的这套笔记手册&#xff0c;主要是分享一些.NET Core比较优秀的社区资料和微软官方资料。已经把所有的重要知识点进行了完整的归类和整理&#xff0c;可以让大家更清晰和快速的学习.NET Core&#xff0c;不浪费任何多余的时间&#xff01;全网首发&#xff01;相…

python异或运算怎么算_小强学Python+OpenCV之-1.4.4掩膜mask及位运算(与、或、非、异或)...

问题引入在小强学PythonOpenCV之&#xff0d;1.4.2裁剪一节&#xff0c;我们使用的是numpy数组切片功能实现图片区域的裁剪。那么&#xff0c;如果我们想要裁剪图像中任意形状的区域时&#xff0c;应该怎么办呢&#xff1f;答案是&#xff0c;使用掩膜(masking)。但是这一节我们…

51 Nod 1670 打怪兽

1670 打怪兽lyk在玩一个叫做“打怪兽”的游戏。游戏的规则是这样的。lyk一开始会有一个初始的能量值。每次遇到一个怪兽&#xff0c;若lyk的能量值>怪兽的能量值&#xff0c;那么怪兽将会被打败&#xff0c;lyk的能量值增加1&#xff0c;否则lyk死亡&#xff0c;游戏结束。若…

QQ协议调试器 QQDebugger

QQ协议老变&#xff0c;为了分析协议&#xff0c;单用抓包工具还是不够的&#xff0c;还是得需要很好的调试工具。在网上找了几个调试工具&#xff0c;易用性均欠佳&#xff0c;不得已自己开发了一个 QQDebugger&#xff0c;不敢专美&#xff0c;特意发布出来。QQDebugger 在功…