初识 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 显得非常不经济。
1335 1
|
人工智能 边缘计算 监控
冼峰:数字化成为衡量水务企业竞争力新标志 | 阿里CIO学院名人堂
基于大数据、人工智能技术的数字化、智能化水平已经成为衡量水务企业竞争力的重要标志。
冼峰:数字化成为衡量水务企业竞争力新标志  | 阿里CIO学院名人堂
|
7月前
|
Linux
Linux的strings命令如何使用?
【6月更文挑战第3天】Linux的strings命令如何使用?
155 4
|
8月前
|
网络协议 Ubuntu Linux
|
8月前
|
机器学习/深度学习 监控 自动驾驶
揭秘深度学习在图像识别中的创新应用
【4月更文挑战第12天】 随着人工智能技术的飞速发展,深度学习作为其核心推动力之一,在图像识别领域展现出了前所未有的能力。本文将深入探讨深度学习技术在图像识别中的应用,重点分析卷积神经网络(CNN)的工作原理、优化策略以及最新的研究进展。通过实例分析,我们将展示深度学习如何改善图像分类、目标检测和语义分割等任务的性能,并讨论其在现实场景中遇到的挑战及解决方案。文章旨在为读者提供一个全面而深入的视角,以理解深度学习在图像处理领域的最新动态和未来趋势。
70 0
|
8月前
|
机器学习/深度学习 人工智能 算法
开源vs闭源大模型如何塑造技术的未来?开源模型的优劣势&未来发展方向
开源vs闭源大模型如何塑造技术的未来?开源模型的优劣势&未来发展方向
1350 0
|
机器学习/深度学习 传感器 算法
【任务分配】基于拍卖算法多无人机多任务分配附Matlab代码
【任务分配】基于拍卖算法多无人机多任务分配附Matlab代码
|
SQL Java 数据库连接
Mapper代理开发(优化MyBatis入门程序开发)
Mapper代理开发(优化MyBatis入门程序开发)
|
Web App开发 网络协议 Unix
Linux网络编程:原始套接字的魔力【上】
基于原始套接字编程        在开发面向连接的TCP和面向无连接的UDP程序时,我们所关心的核心问题在于数据收发层面,数据的传输特性由TCP或UDP来保证:        也就是说,对于TCP或UDP的程序开发,焦点在Data字段,我们没法直接对TCP或UDP头部字段进行赤裸裸的修改,当然还有IP头。
1592 0