初识 C#

简介: 初识 C#

C#语言与.NET初步认识

C

  • c#是微软公司在2000年6月发布的一种能全新的、简单的、安全的、面向对象的程序设计语言,是专门为.NET的应用而开发的语言。它吸收了C++、VB、Delphi、Java等语言优点,体现了当今最新的程序设计技术的功能和精华。C#读作——CSharp.

NET

  • 也称doNet,一般值Net Framework 框架,是一种平台。是微软为开发应用而创建的一个平台。
  • 作用

    • 桌面应用程序——WinForm(Client/Server),例如:QQ
    • Web 应用程序——ASP.NET Web(B/S),例如:网站
    • 移动 App——ASP.NET Core(跨平台———Windows、Linux、Android IOS)

    ...

  • .NET Framework 是一个全新的、集成的、面向对象的开发平台,以公共语言运行时为基础,支持多种编程语言,且能跨平台运行,是.NET程序运行的开发的必备条件。
  • C# 是一种语言,用于生成面向.NET Framework 环境的代码,但他本身不是.NET 的一部分

.NET 体系结构(如何实现支持多语言、跨平台)与VS 安装

  • .MET 体系结构

    • .NET Framework 主要由公共语言运行时(CLR)和 .NET Framework 基础类库(Base Class Librery,简称 BCL)两部分组成。
    • .NET Framework 位于操作系统与应用程序之间,负责管理在.NET Framework 上运行的各种应用程序。也就是说.NET 应用程序不依赖于操作系统,只依赖于.NET Framework。
  • .NET 是如何实现多语言、跨平台的?

    • .NET 应用程序执行时不是直接编译成本机代码,而是被编译成Microsoft 中间语言(MSIL),然后中间语言交由公共语言运行库(CLR)执行,CLR 的实时编译器(JIT)根据本机的硬件、操作系统等编译成本机代码
    • 公共语言运行库不是一个简单的 JIL 编译器,它还负责提供内存回收、异常处理、安全服务、运行时类型安全检查等底层执行服务。

编写第一个C# 程序

//using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Project_1
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Console.WriteLine("Hello world !");  // 静态类
            System.Console.ReadKey();
        }
    }
}
Hello world !
  • 深入理解程序

    • 为什么引入命名空间?
    • 深入理解Console.WriteLine("Hello world!");——Console是一个类,是System命名空间下的一个静态类,WriteLine是Console类下的一个静态方法。ReadKey是Console类下的另一个静态方法

.NET(C#)程序编译运行原理

  • 高级语言源程序执行时都要经过编译或者解释成机器语言程序才能被 CPU 识别执行。但是 C# 程序执行时分为2次编译期,第一次CLR 对 c# 代码(托管代码)进行第一次编译,将源代码编译成 dll 或者是 exe 文件,这类文件都是由中间语言组成(即此时代码被编译成中间语言)。然后是运行期,CLR 会针对目前特定的硬件环境使用即时编辑(JIT),也就是将中间语言翻译成本机代码并执行,把将编译过后的代码放入一个缓冲区中,下次使用相同的代码时,就直接从缓冲区调用,也就是说相同代码只编译 一次,从而提高了程序运行速度(一次编译,处处执行)
  • exe 文件和 Dil 文件是.NET 程序编译后的核心文件

    • exe 文件:编译后生成的可执行文件,里面是 IL 指令。 可以通过 MSIL 查看工具 ildasm.exe 查看
    • Dil 文件:编译后生成的动态链接库文件,里面也是 IL 指令
  • Pdb 文件:Porgram Debug DataBase(程序调试数据库)文件,包含了编译后程序执行源代码的位置信息,用于调试的时候定位源代码,方便调试,仅仅是调试时需要用到的文件,发布时完全可以删除
  • xxx.exe.config 文件:对应于 App.config 文件
  • 非托管代码执行过程:就是源代码直接编译成对应的操作系统、CPU 硬件的机器指令语言,缺点:不同的操作系统需要单独编写代码,重复低效。

自定义 C# 快速简写代码

  • 在 vs 中选择工具-->代码片段管理器(语言下拉框选择 CShape),位置下面的下拉列表再选择 Visual C#,然后复制位置文本框里的路径,即找到代码简写文件(X.snippet),然后随便复制一个(比如 cw.snippet),复制的位置可以任意(注意两点:第一、不要再原来的 cw.snippet 位置,第二、需要创建一个文件夹(zdy)来储存复制过来的 cw.snippet 文件)。然后再对复制过来的文件修改(比如需要创建快速输入 Console ReadKey(),可以把文件名改为 crk.snippet),接着打开重命名后的文件(crk.snippet)修改里面的内容,需修改 四个位置。
目录
相关文章
|
JSON 算法 开发工具
拒绝臃肿,一个文件搞定 C# 调用阿里云短信服务发送短信
短信发送是软件开发中的一个常见功能,在国内常用于基于短信验证码的用户注册、找回密码和操作授权等场景。阿里云的短信服务在调用时需要实现一个不是那么容易的签名算法,但如果只是为了发送短信这一个功能就去引用其提供的 SDK 显得非常不经济。
937 1
|
开发框架 JavaScript Java
Go是一门什么样的语言?
Go是一门什么样的语言?
121 0
|
10天前
|
Kubernetes 安全 Devops
【云效流水线 Flow 测评】驾驭云海:五大场景下的云效Flow实战部署评测
云效是一款企业级持续集成和持续交付工具,提供免费、高可用的服务,集成阿里云多种服务,支持蓝绿、分批、金丝雀等发布策略。其亮点包括快速定位问题、节省维护成本、丰富的企业级特性及与团队协作的契合。基础版和高级版分别针对小型企业和大规模团队,提供不同功能和服务。此外,云效对比Jenkins在集成阿里云服务和易用性上有优势。通过实战演示了云效在ECS和K8s上的快速部署流程,以及代码质量检测和AI智能排查功能,展示了其在DevOps流程中的高效和便捷,适合不同规模的企业使用。本文撰写用时5小时,请各位看官帮忙多多支持,如有建议也请一并给出,您的建议能帮助我下一篇更加出色。
136083 13
|
14天前
|
存储 Prometheus 并行计算
10倍性能提升-SLS Prometheus 时序存储技术演进
本文将介绍近期SLS Prometheus存储引擎的技术更新,在兼容 PromQL 的基础上实现 10 倍以上的性能提升。同时技术升级带来的成本红利也将回馈给使用SLS 时序引擎的上万内外部客户。
158387 5
|
17天前
|
设计模式 前端开发 JavaScript
卓越工程布道:掌握条件判断的模式
本文是普适性的经验分享,并非按规范局限在 JavaScript 前端视角 做出的总结,除JavaScript外还深入结合了ActionScript 3.0、PHP、C / C++、Basic非纯粹OOP领域语言的经验。
241698 54
|
10天前
|
存储 SQL Apache
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
|
15天前
|
人工智能 弹性计算 算法
一文解读:阿里云AI基础设施的演进与挑战
对于如何更好地释放云上性能助力AIGC应用创新?“阿里云弹性计算为云上客户提供了ECS GPU DeepGPU增强工具包,帮助用户在云上高效地构建AI训练和AI推理基础设施,从而提高算力利用效率。”李鹏介绍到。目前,阿里云ECS DeepGPU已经帮助众多客户实现性能的大幅提升。其中,LLM微调训练场景下性能最高可提升80%,Stable Difussion推理场景下性能最高可提升60%。
|
11天前
|
存储 弹性计算 Cloud Native
1 名工程师轻松管理 20 个工作流,创业企业用 Serverless 让数据处理流程提效
为应对挑战,语势科技采用云工作流CloudFlow和函数计算FC,实现数据处理流程的高效管理与弹性伸缩,提升整体研发效能。
64452 1
|
17天前
|
消息中间件 安全 API
Apache RocketMQ ACL 2.0 全新升级
RocketMQ ACL 2.0 不管是在模型设计、可扩展性方面,还是安全性和性能方面都进行了全新的升级。旨在能够为用户提供精细化的访问控制,同时,简化权限的配置流程。欢迎大家尝试体验新版本,并应用在生产环境中。
187110 6
|
16天前
|
机器人 Linux API
基于Ollama+AnythingLLM轻松打造本地大模型知识库
Ollama是开源工具,简化了在本地运行大型语言模型(ile优化模型运行,支持GPU使用和热加载。它轻量、易用,可在Mac和Linux上通过Docker快速部署。AnythingLLM是Mintplex Labs的文档聊天机器人,支持多用户、多种文档格式,提供对话和查询模式,内置向量数据库,可高效管理大模型和文档。它也是开源的,能与Ollama结合使用,提供安全、低成本的LLM体验。这两款工具旨在促进本地高效利用和管理LLMs。
140108 29