【C#】C#编程入门指南:构建你的.NET开发基础

文章目录

  • 前言:
  • 1. C# 开发环境 VS的基本熟悉
  • 2. 解决方案与项目的关系
  • 3. 编辑、编译、链接、运行
  • 4. 托管代码和CLR
    • 4.1 CLR:
    • 4.2 C# 代码第编译过程(两次编译的)
  • 5. 命名空间
  • 6. 类的组成与分析
  • 7. C# 的数据类型
    • 7.1 值类型
    • 7.2 引用类型
    • 7.3 变量
  • 8. 注释与帮助文档
  • 总结:

前言:

在当今的软件开发领域,C# 作为一种功能强大且广泛使用的编程语言,已经成为许多开发者的首选。它以其简洁的语法、强大的面向对象特性以及与.NET框架的紧密集成而闻名。本文旨在为初学者提供一个全面的C#学习指南,从开发环境的搭建到代码的编写、编译、运行,再到深入理解C#的核心概念,如托管代码、命名空间、类的结构、数据类型等。通过这篇文章,读者将能够建立起对C#编程基础的清晰认识,并为进一步的学习和实践打下坚实的基础。

1. C# 开发环境 VS的基本熟悉

创建项目(本质:生成一个文件夹 文件夹中存放的是项目开发中所需的代码文件等)
生成的文件含义:
.sln : 解决方案文件
.cs : 编写代码的源文件
.csproj : 工程文件
.config : 配置文件
.bin : 可执行文件 (应用程序文件)
.obj : 生成的可执行文件过程中的一些中间文件
Properties: 程序集的一些信息

2. 解决方案与项目的关系

解决方案:一个整体项目的解决办法对应的全局方案(广义上的项目)
项目(狭义上的项目)
关系:一个解决方案中可以包含多个项目
在这里插入图片描述

3. 编辑、编译、链接、运行

编辑:编写代码程序
编译:将你编写的代码翻译成机器能够运行(执行)的代码(二进制代码)
链接:将多个编译器编译的机器语言的代码链接合成一个exe文件的过程
运行:将exe文件中代码加载到内存中进行代码的执行过程

4. 托管代码和CLR

4.1 CLR:

CLR:公共语言运行库(公共语言运行时)Common Language RunTime
作用: 在应用程序启动的时候对其进行一个全方面的管理

4.2 C# 代码第编译过程(两次编译的)

  1. VS中自带一个编译器(csc.exe)编译成 exe/dll 文件(微软的中间语言 简称IL)

查看中间语言:

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools

在这里插入图片描述
在这里插入图片描述

  1. 引用程序启动之后通过 CLR 中的 JIT 编译器,根据操作系统的不同产生不同的机器代码(X86 / X64)
  2. 流程图:

C#代码文件 -> IL -> 机器码

  1. CLR 中的组件:内存管理、异常处理、垃圾回收、JIT编译器、类加载器、CTS、CLS
  2. 托管代码和非托管代码:
  1. 托管代码:CLR管理之下运行的代码就是托管代码(如:.Net)
  2. 非托管代码: 根据不同操作系统直接产生对应的机器码(非 .Net)
  1. CTS 和 CLS:是CLR重要的组件

CTS 是通用类型系统:只要解决不同的语言间数据类型差异的问题。
CLS 是通过语言的规范,主要解决不同开发语言语法规范的问题。

举例:
C# 定义一个整型的变量 int x = 0;
VB 定义一个整型变量 integer x = 0;
在这里插入图片描述

5. 命名空间

命名空间的作用:划分区域方便管理
拿到命空间中的类:

  1. 同一项目下:using去找到它
// 1.系统提供的命名空间
// 2.自己去找到命名空间
using QHD.TestProject; // 合并101包房和102包房namespace QHD.TestProject1 // 101包房
{internal class Program{static void Main(string[] args){Class1 class1 = new Class1();}}
}
namespace QHD.TestProject // 102包房
{internal class Class1{}
}
  1. 不同项目下:先引用using
    在这里插入图片描述
namespace ConsoleApp1 
{public class Class2 // 改成public{}
}
using ConsoleApp1;

6. 类的组成与分析

  1. C# 是面向对象的编程方式。
  2. 解决方案->若干个项目->若干个类
  3. 举例
    一辆汽车(汽车类),(颜色、宽度、高度等等)属性。(播放音乐、辅助驾驶等等功能)方法。
  4. 类的组成部分:字段(配合属性/方法的使用的)、属性(获取数据)、方法(实现功能)
  5. 类的创建格式:访问修饰符、关键字、类的名称{ //组成部分 }
  6. 访问修饰符:internal(内部的)(默认)、public(公共的)
  7. 关键字:class
  8. 创建字段(成员变量):访问修饰符、数据类型、字段名称;
    访问修饰符:private(私有)、public(公共的)
  9. 创建属性:方位修饰符、数据类型、属性名称{ set;get }、访问修饰符:Public(公共的)
  10. 创建方法:访问修饰符、返回值、方法名(参数){ //类容 }
    访问修饰符:private(私有)、public(公共的)
namespace QHD.ClassAnalysis
{public class Class1{// 字段private string text = "我是字段";// 属性public string Text { set; get; } = "我是属性";// 方法public void Show(int x){// 内容}}
}

7. C# 的数据类型

7.1 值类型

  1. 整型:
    在这里插入图片描述

  2. 浮点型:
    在这里插入图片描述

  3. 字符型:
    在这里插入图片描述

  4. 布尔类型:
    在这里插入图片描述

  5. 日期类型:
    在这里插入图片描述

7.2 引用类型

类、数组、字符串都是属于引用类型,需要注意 String 类型在 C# 底层中是引用类型但是使用的式值类型的效果。

7.3 变量

  1. 什么是变量?
    变量就是内存地址的别名,也称之为字段,为了方便操作数据而存在的。
  2. 如何定义变量?
    利用以上的数据类型就可以定义变量了,比如定义一个 int 整型变量 int x = 30;
  3. 变量定义的作用域:
    成员变量(定义在类级别下)、局部变量(如定义在方法中)
  4. 变量名称的命名规范:
    首个单词小写,多个单词的情况下,其余的单词首字母大写
namespace QHD.ClassAnalysis
{internal class Program // 入口类(启动){// 成员变量static int testData = 0;static void Main(string[] args){// 1.定义一个int类型的变量int data = 0; // 局部变量(定义在方法中)// 写入到控制台当中Console.WriteLine(data);Test();// 停留显示Console.ReadLine();}static void Test(){testData = 10;Console.WriteLine(testData);}}
}

8. 注释与帮助文档

using System.Drawing;namespace QHD.AnnotationProject
{/// <summary>/// 入口类/// </summary>internal class Program{// 创建一个int类型变量,初始值为0private int intData = 0;// 创建一个String类型变量,初始值为空值private string stringData = ""; //Char ''// 创建一个float类型变量,初始值为0.0private float floatData = 0.0f;/// <summary>/// 创建一个颜色属性, 鼠标放上面按F1键可以看帮助文档/// </summary>public Color color { get; set; }/// <summary>/// 入口方法/// </summary>/// <param name="args"></param>static void Main(string[] args){}}
}

总结:

本文全面介绍了C#编程的基础知识,从VS开发环境的熟悉到解决方案与项目的关系,再到代码的编辑、编译、链接和运行过程。我们深入探讨了托管代码与CLR的工作原理,以及C#代码的两次编译过程。文章还详细解释了命名空间的作用和如何使用它们,以及类的基本组成和分析方法。此外,我们讨论了C#中的数据类型,包括值类型和引用类型,以及变量的定义和作用域。最后,文章还涉及了注释和帮助文档的编写,这对于代码的维护和可读性至关重要。通过这些内容的学习,读者不仅能够掌握C#编程的基础知识,还能够理解C#语言的设计哲学和编程范式,为成为一名优秀的C#开发者奠定基础。

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

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

相关文章

算法闭关修炼百题计划(八)

一半来自力扣的push题单 1.最大连续1的个数II2.长度为k的无重复字符子串3.句子的相似性4.移位字符串分组5.x的平方根6.Z字形变换 1.最大连续1的个数II 给定一个二进制数组nums&#xff0c;如果最多可以翻转一个0&#xff0c;则返回数组中连续1的最大个数 之前是Window&#x…

论文笔记(五十六)VIPose: Real-time Visual-Inertial 6D Object Pose Tracking

VIPose: Real-time Visual-Inertial 6D Object Pose Tracking 文章概括摘要I. INTRODACTIONII. 相关工作III. APPROACHA. 姿态跟踪工作流程B. VIPose网络 文章概括 引用&#xff1a; inproceedings{ge2021vipose,title{Vipose: Real-time visual-inertial 6d object pose tra…

K8S containerd拉取harbor镜像

前言 接前面的环境 K8S 1.24以后开始启用docker作为CRI&#xff0c;这里用containerd拉取 参考文档 正文 vim /etc/containerd/config.toml #修改内容如下 #sandbox_image "registry.aliyuncs.com/google_containers/pause:3.10" systemd_cgroup true [plugins.…

LM2 : A Simple Society of Language Models Solves Complex Reasoning

文章目录 题目摘要简介相关工作方法论实验结果结论局限性 题目 LM2&#xff1a;简单的语言模型社会解决复杂推理问题 论文地址&#xff1a;https://aclanthology.org/2024.emnlp-main.920/ 项目地址&#xff1a; https://github.com/LCS2-IIITD/Language_Model_Multiplex 摘要…

STM32从上电开始启动过程详解(上电->分散加载->main函数)

1.硬件复位之后&#xff0c;CPU 内的时序逻辑电路首先完成如下两个工作&#xff08; 程序代码下载到内部 flash 为例&#xff0c;flash首地址 0x0800 0000&#xff09;  将 0x08000000 位置存放的堆栈栈顶地址存放到 SP 中(MSP)。  将 0x08000004 位置存放的向量地址装入 P…

新版Apache tomcat服务安装 Mac+Window双环境(笔记)

简介&#xff1a;Tomcat服务器器的下载和安装&#xff1a; 安装前提 1&#xff09;电脑需要有java环境&#xff0c;jdk8以上&#xff0c;否则启动不不成功 2&#xff09;已经安装Sublime⽂文件编辑软件 3&#xff09;window电脑需要显示⽂文件拓拓展名 官网&#xff08;https:…

数据重塑:长宽数据转换【基于tidyr】

在数据分析和可视化过程中&#xff0c;数据的组织形式直接影响着我们能够进行的分析类型和可视化效果。这里简单介绍两种常见的数据格式&#xff1a;长格式&#xff08;Long Format&#xff09;和宽格式&#xff08;Wide Format&#xff09;&#xff0c;以及如何使用tidyr包进行…

ollama+springboot ai+vue+elementUI整合

1. 下载安装ollama (1) 官网下载地址&#xff1a;https://github.com/ollama/ollama 这里以window版本为主&#xff0c;下载链接为&#xff1a;https://ollama.com/download/OllamaSetup.exe。 安装完毕后&#xff0c;桌面小图标有一个小图标&#xff0c;表示已安装成功&…

基于lighthouse搭建私有网盘Cloudreve【开源应用实践】

基于lighthouse搭建私有网盘Cloudreve【超高性价比】 今天给大家分享一款私人网盘神器&#xff0c;既能存放你的文件文档&#xff0c;也能替你保存那不可告人的秘密~ 香菇今天将手把手教给大家如何在腾讯云轻量应用服务器上搭建个人专属网盘 1. 既爱又恨的网盘存储 很多小伙伴…

JavaScript高级篇 - 浏览器事件详解 DOM事件以及独立封装事件Util和Ajax封装

Dom事件 Model&#xff08;特定领域对象的抽象&#xff09;、Protocal&#xff08;针对数据格式的约定&#xff09; DOM(Document Object Model&#xff0c;文档对象模型)是针对HTML文档和XML文档的一个API。DOM描绘了一个层次化的节点树&#xff0c;允许开发人员添加、移出和…

MinIO 的 S3 over RDMA 计划: 为高速人工智能数据基础设施设定对象存储新标准

随着 AI 和机器学习的需求不断加速&#xff0c;数据中心网络正在迅速发展以跟上步伐。对于许多企业来说&#xff0c;400GbE 甚至 800GbE 正在成为标准选择&#xff0c;因为数据密集型和时间敏感型 AI 工作负载需要高速、低延迟的数据传输。用于大型语言处理、实时分析和计算机视…

git config是做什么的?

git config是做什么的&#xff1f; git config作用配置级别三种配置级别的介绍及使用&#xff0c;配置文件说明 使用说明git confi查看参数 默认/不使用这个参数 情况下 Git 使用哪个配置等级&#xff1f; 一些常见的行为查看配置信息设置配置信息删除配置信息 一些常用的配置信…

使用 npm 安装 Yarn

PS E:\WeChat Files\wxid_fipwhzebc1yh22\FileStorage\File\2024-11\spid-admin\spid-admin> yarn install yarn : 无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果包括路径&#xff0c;请确保路径正确&#xff0c;然后…

常用在汽车PKE无钥匙进入系统的高度集成SOC芯片:CSM2433

CSM2433是一款集成2.4GHz频段发射器、125KHz接收器和8位RISC&#xff08;精简指令集&#xff09;MCU的SOC芯片&#xff0c;用在汽车PKE无钥匙进入系统里。 什么是汽车PKE无钥匙进入系统&#xff1f; 无钥匙进入系统具有无钥匙进入并且启动的功能&#xff0c;英文名称是PKE&…

机器学习基础05

目录 1.随机森林 1.1随机森林的介绍 1.2算法原理 1.3API 2.线性回归 2.1回归的含义 2.2线性回归 2.3损失函数 2.4多参数回归 2.5最小二乘法MSE 2.6API 1.随机森林 集成学习的基本思想就是将多个分类器组合&#xff0c;从而实现一个预测效果更好的集成分类器。 集成…

数据库范式、MySQL 架构、算法与树的深入解析

一、数据库范式 在数据库设计中&#xff0c;范式是一系列规则&#xff0c;用于确保数据的组织和存储具有良好的结构、完整性以及最小化的数据冗余。如果不遵循范式设计&#xff0c;数据可能会以平铺式罗列&#xff0c;仅使用冒号、分号等简单分隔。这种方式存在诸多弊端&#…

SQL面试题——奔驰SQL面试题 车辆在不同驾驶模式下的时间

SQL面试题——奔驰SQL面试题 我们的表大致如下 CREATE TABLE signal_log( vin STRING COMMENTvehicle frame id, signal_name STRING COMMENTfunction name, signal_value STRING COMMENT signal value , ts BIGINT COMMENTevent timestamp, dt STRING COMMENTformat yyyy-mm…

Hadoop生态圈框架部署(六)- HBase完全分布式部署

文章目录 前言一、Hbase完全分布式部署&#xff08;手动部署&#xff09;1. 下载Hbase2. 上传安装包3. 解压HBase安装包4. 配置HBase配置文件4.1 修改hbase-env.sh配置文件4.2 修改hbase-site.xml配置文件4.3 修改regionservers配置文件4.4 删除hbase中slf4j-reload4j-1.7.33.j…

YOLOv11改进,YOLOv11添加GnConv递归门控卷积,二次创新C3k2结构

摘要 视觉 Transformer 在多种任务中取得了显著的成功,这得益于基于点积自注意力的新空间建模机制。视觉 Transformer 中的关键因素——即输入自适应、长距离和高阶空间交互——也可以通过卷积框架高效实现。作者提出了递归门控卷积(Recursive Gated Convolution,简称 gnCo…

Queuing 表(buffer表)的优化实践 | OceanBase 性能优化实践

案例问题描述 该案例来自一个金融行业客户的问题&#xff1a;他们发现某个应用对一个数据量相对较小的表&#xff08;仅包含数千条记录&#xff09;访问时&#xff0c;频繁遇到性能下降的情况。为解决此问题&#xff0c;客户向我们求助进行分析。我们发现这张表有频繁的批量插…