【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.rhkb.cn/news/474887.html

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

相关文章

手摸手5-springboot开启打印sql完整语句

目录 手摸手5-springboot开启打印sql完整语句简介 p6spy简介引入依赖修改application-jdbc.yaml配置配置spy.properties文件配置项运行后效果 手摸手5-springboot开启打印sql完整语句 简介 MyBatis-Plus提供了SQL分析与打印的功能&#xff0c;通过集成p6spy组件&#xff0c;可…

深入解析TK技术下视频音频不同步的成因与解决方案

随着互联网和数字视频技术的飞速发展&#xff0c;音视频同步问题逐渐成为网络视频播放、直播、编辑等过程中不可忽视的技术难题。尤其是在采用TK&#xff08;Transmission Keying&#xff09;技术进行视频传输时&#xff0c;由于其特殊的时序同步要求&#xff0c;音视频不同步现…

力扣(leetcode)题目总结——动态规划篇

leetcode 经典题分类 链表数组字符串哈希表二分法双指针滑动窗口递归/回溯动态规划二叉树辅助栈 本系列专栏&#xff1a;点击进入 leetcode题目分类 关注走一波 前言&#xff1a;本系列文章初衷是为了按类别整理出力扣&#xff08;leetcode&#xff09;最经典题目&#xff0c…

MySQL超详细安装配置教程(亲测有效)

目录 1.下载mysql 2.环境配置 3.安装mysql ​4.navicat工具下载与连接 ​5总结 1.下载mysql mysql下载--MySQL &#xff1a;&#xff1a; 下载 MySQL 社区服务器 下载的时候这里直接逃过就行 我这里的版本是最新的mysql8.0.37 下载完成之后,将压缩包进行解压 这里我建议大…

高阶云服务-ELB+AS

ELBAS 弹性负载均衡弹性伸缩 原来1台web服务器不满足相应&#xff0c;现部署多台提供相同服务&#xff1b; 由于多个服务器多个ip该如何提供给应用呢&#xff1f; 引申出负载均衡&#xff08;HAProxy&#xff0c;LVS01四层&#xff0c;Nginx七层&#xff09; 防单点故障做主备…

python蓝桥杯刷题2

1.最短路 题解&#xff1a;这个采用暴力枚举&#xff0c;自己数一下就好了 2.门牌制作 题解&#xff1a;门牌号从1到2020&#xff0c;使用for循环遍历一遍&#xff0c;因为range函数无法调用最后一个数字&#xff0c;所以设置成1到2021即可&#xff0c;然后每一次for循环&…

阿里云轻量应用服务器可以用在哪些场景呢

在数字化转型的浪潮中&#xff0c;中小企业面临着如何快速、高效地上云的挑战。阿里云轻量应用服务器&#xff08;SWAS&#xff09;作为一款专为中小企业设计的云服务产品&#xff0c;提供了简单易用、经济实惠的解决方案&#xff0c;助力企业轻松实现云端部署&#xff0c;赋能…

git合并分支

首先是UI非常建议切换成传统的UI&#xff1a; 当前所在分支email 右键切换的时候chekout 点击之后就可以切换了 再执行查看就知道已经切换到了main分支&#xff1b; 总结&#xff1a; git branch 查看当前分支&#xff0c;其实不用查看你看或者小图标&#xff0c;就是那…

《生成式 AI》课程 第3講 CODE TASK执行文章摘要的机器人

课程 《生成式 AI》课程 第3講&#xff1a;訓練不了人工智慧嗎&#xff1f;你可以訓練你自己-CSDN博客 任务1:总结 1.我们希望你创建一个可以执行文章摘要的机器人。 2.设计一个提示符&#xff0c;使语言模型能够对文章进行总结。 model: gpt-4o-mini,#gpt-3.5-turbo, import…

微众银行申请专利:不过分丢失泛用能力,提高语音大模型对困难样本学习效率

微众银行正申请一项名为“语音大模型训练方法、装置、设备、存储介质以及产品”的发明专利。其申请于2024年8月22日,公布于2024年10月15日,涉及语音识别技术领域。 方法应用于待训练的语音大模型,包括:获取当前批次的训练样本集,其中包括语音标注样本集;将当前批次的训练…

23种设计模式-备忘录(Memento)设计模式

文章目录 一.什么是备忘录设计模式&#xff1f;二.备忘录模式的特点三.备忘录模式的结构四.备忘录模式的优缺点五.备忘录模式的 C 实现六.备忘录模式的 Java 实现七.总结 类图&#xff1a; 备忘录设计模式类图 一.什么是备忘录设计模式&#xff1f; 备忘录设计模式&#xff08…

Docker入门之Windows安装Docker初体验

在之前我们认识了docker的容器&#xff0c;了解了docker的相关概念&#xff1a;镜像&#xff0c;容器&#xff0c;仓库&#xff1a;面试官让你介绍一下docker&#xff0c;别再说不知道了 之后又带大家动手体验了一下docker从零开始玩转 Docker&#xff1a;一站式入门指南&#…

视频直播5G CPE解决方案:ZX7981PG/ZX7981PMWIFI6网络覆盖

方案背景 视频直播蓬勃发展的当下&#xff0c;传统直播网络联网方式的局限性越来越明显。目前传统直播的局限性主要集中在以下几个方面&#xff1a; 传统直播间网络架构条件有限&#xff0c;可连接WIFI数量少&#xff0c;多终端同时直播难以维持&#xff1b;目前4G网络带宽有限…

生数科技发布 Vidu 1.5 新版本,引领视频大模型新潮流

在国内视频大模型领域&#xff0c;生数科技一直以创新和突破而备受瞩目。近日&#xff0c;生数科技再度发力&#xff0c;发布了 Vidu 1.5 新版本&#xff0c;为视频创作带来了全新的变革与机遇。 Vidu 1.5 新版本在多个方面展现出了卓越的性能和创新的特点。首先&#xff0c;它…

unity 打包WebGL打开后Input无法输入中文,在手机端无法调用输入法(使用WebGLInput)

成果展示 1、只是在电脑上运行时 使用TexMeshPro-InputField组件就可以输入中文了 2.不仅在电脑上运行&#xff0c;还需要在移动端运行 这个时候就需要使用WebGLInput插件&#xff0c;连接里有测试demo 1、下载后把WebGLSupport.unitypackage 导入到工程里 2、给input添加两…

MySQL8 安装教程

一、从官网下载mysql-8.0.18-winx64.zip安装文件&#xff08; 从 https://dev.mysql.com/downloads/file/?id484900 下载zip版本安装包 mysql-8.0.18-winx64.zip 解压到本地磁盘中&#xff0c;例如解压到&#xff1a;D盘根目录&#xff0c;并改名为MySQL mysql-8.0.34-winx6…

fastapi 调用ollama之下的sqlcoder模式进行对话操作数据库

from fastapi import FastAPI, HTTPException, Request from pydantic import BaseModel import ollama import mysql.connector from mysql.connector.cursor import MySQLCursor import jsonapp FastAPI()# 数据库连接配置 DB_CONFIG {"database": "web&quo…

自动化报表怎么写

自动化报表设计 标题 日期 筛选器 具体字段自由字段 迷你图 同环比 条件格式 步骤 填充数值 1、先筛选战区日期sumifs(纯数值-注册人数&#xff0c;纯数值-战区列&#xff0c;周报-战区单元格&#xff0c;纯数值-日期&#xff0c;周报-日期单元格) 需要注意⚠️纯数值里的单元格…

学习笔记022——Ubuntu 安装 MySQL8.0版本踩坑记录

目录 1、查看可安装 MySQL 版本 2、Ubuntu安装 MySQL8.0 3、MySQL8.0 区分大小写问题 4、MySQL8.0 设置sql_mode 5、MySQL8.0 改端口33060&#xff08;个人遇到问题&#xff09; 1、查看可安装 MySQL 版本 ## 列出可用的MySQL版本&#xff08;列出所有可用的MySQL版本以…

优化装配,提升品质:虚拟装配在汽车制造中的关键作用

汽车是各种零部件的有机结合体&#xff0c;因此汽车的装配工艺水平和装配质量直接影响着汽车的质量与性能。在汽车装配过程中&#xff0c;经常会发生零部件间干涉或装配顺序不合理等现象&#xff0c;且许多零部件制造阶段产生的质量隐患要等到实际装配阶段才能显现出来&#xf…