C# 语言基础全面解析
.NET学习资料
.NET学习资料
.NET学习资料
一、引言
C# 是一种功能强大、面向对象且类型安全的编程语言,由微软开发,广泛应用于各种类型的软件开发,从桌面应用、Web 应用到游戏开发等领域。本文将全面介绍 C# 语言的基础知识,帮助你快速入门 C# 编程。
二、基本语法
2.1 程序结构
C# 程序通常由一个或多个类组成,每个类可以包含字段、属性、方法和事件等成员。程序的执行从 Main 方法开始,这是程序的入口点。以下是一个简单的 C# 程序结构示例:
using System;class Program
{static void Main(){Console.WriteLine("这是一个简单的 C# 程序");}
}
在上述代码中:
using System; 引入了 System 命名空间,该命名空间包含了许多常用的类型和功能,如 Console 类,用于控制台输入输出。
class Program 定义了一个名为 Program 的类,所有 C# 代码都需要放在类中。
static void Main() 是程序的入口方法,static 关键字表示该方法属于类本身,而不是类的实例。void 表示该方法没有返回值。
2.2 注释
注释是代码中用于解释说明的部分,不会被编译器执行。C# 支持三种类型的注释:
单行注释:以 // 开头,注释内容直到行末。例如:
// 这是一个单行注释
多行注释:以 /* 开始,以 */ 结束,可以跨越多行。例如:
/*
这是一个
多行注释
*/
文档注释:以 /// 开头,用于生成代码文档。例如:
/// <summary>
/// 这是一个用于计算两个数之和的方法
/// </summary>
/// <param name="a">第一个数</param>
/// <param name="b">第二个数</param>
/// <returns>两数之和</returns>
public static int Add(int a, int b)
{return a + b;
}
三、数据类型
3.1 基本数据类型
C# 提供了丰富的基本数据类型,可分为以下几类:
整数类型:包括 sbyte(8 位有符号整数)、byte(8 位无符号整数)、short(16 位有符号整数)、ushort(16 位无符号整数)、int(32 位有符号整数)、uint(32 位无符号整数)、long(64 位有符号整数)和 ulong(64 位无符号整数)。例如:
int number = 10;
long bigNumber = 1000000000000;
浮点类型:float(单精度浮点数)和 double(双精度浮点数),用于表示小数。例如:
float piApprox = 3.14f;
double morePrecisePi = 3.141592653589793;
字符类型:char 用于表示单个字符,使用单引号括起来。例如:
char letter = 'A';
布尔类型:bool 只有两个值 true 和 false,用于逻辑判断。例如:
bool isDone = true;
3.2 引用数据类型
引用数据类型存储对对象的引用,而不是对象本身。常见的引用数据类型包括:
类:是一种自定义的数据类型,封装了数据和操作数据的方法。例如:
class Person
{public string Name { get; set; }public int Age { get; set; }
}
数组:用于存储多个相同类型的元素。例如:
int[] numbers = { 1, 2, 3, 4, 5 };
string[] names = new string[3] { "Alice", "Bob", "Charlie" };
字符串:string 用于表示文本,是字符的序列。字符串使用双引号括起来。例如:
string greeting = "Hello, World!";
四、变量和常量
4.1 变量
变量是用于存储数据的标识符,在使用前需要声明其类型。例如:
int age;
age = 25;string message = "Hello";
C# 也支持类型推断,使用 var 关键字,编译器会根据初始化值推断变量的类型。例如:
var number = 10; // 编译器推断 number 为 int 类型
var name = "John"; // 编译器推断 name 为 string 类型
4.2 常量
常量是在程序执行过程中值不能改变的量。使用 const 关键字声明常量。例如:
const double pi = 3.14159;
const string companyName = "ABC Company";
五、运算符
5.1 算术运算符
包括 +(加)、-(减)、*(乘)、/(除)和 %(取模)。例如:
int result1 = 5 + 3;
int result2 = 10 - 7;
int result3 = 4 * 6;
double result4 = 15.0 / 4.0;
int remainder = 17 % 5;
5.2 赋值运算符
= 用于将值赋给变量。此外,还有复合赋值运算符,如 +=、-=、*=、/= 等。例如:
int num = 10;
num += 5; // 等价于 num = num + 5;
5.3 比较运算符
包括 ==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)和 <=(小于等于),用于比较两个值,返回 bool 类型结果。例如:
bool isEqual = 5 == 5;
bool isGreater = 10 > 8;
5.4 逻辑运算符
&&(逻辑与)、||(逻辑或)和 !(逻辑非),用于处理布尔值。例如:
bool condition1 = true;
bool condition2 = false;
bool result5 = condition1 && condition2;
bool result6 = condition1 || condition2;
bool result7 =!condition1;
六、控制结构
6.1 if - else 语句
用于根据条件执行不同的代码块。例如:
int score = 85;
if (score >= 90)
{Console.WriteLine("优秀");
}
else if (score >= 80)
{Console.WriteLine("良好");
}
else
{Console.WriteLine("其他");
}
6.2 switch - case 语句
用于根据不同的值执行不同的代码块,适用于多分支判断。例如:
int dayOfWeek = 3;
switch (dayOfWeek)
{case 1:Console.WriteLine("星期一");break;case 2:Console.WriteLine("星期二");break;case 3:Console.WriteLine("星期三");break;default:Console.WriteLine("其他");break;
}
6.3 for 循环
用于重复执行一段代码指定的次数。例如:
for (int i = 0; i < 5; i++)
{Console.WriteLine(i);
}
6.4 while 循环
只要指定的条件为 true,就会重复执行代码块。例如:
int count = 0;
while (count < 3)
{Console.WriteLine(count);count++;
}
6.5 do - while 循环
与 while 循环类似,但它会先执行一次代码块,然后再检查条件。例如:
int value = 0;
do
{Console.WriteLine(value);value++;
} while (value < 3);
七、方法
方法是包含一系列语句的代码块,用于执行特定的任务。方法可以接受参数并返回值。以下是一个简单的方法示例:
class MathUtils
{public static int Add(int a, int b){return a + b;}
}class Program
{static void Main(){int result = MathUtils.Add(3, 5);Console.WriteLine(result);}
}
在上述代码中:
public static int Add(int a, int b) 定义了一个名为 Add 的公共静态方法,接受两个 int 类型的参数 a 和 b,并返回一个 int 类型的值。
MathUtils.Add(3, 5) 在 Main 方法中调用了 Add 方法,并传递参数 3 和 5,返回的结果赋值给 result 变量。
八、总结
本文介绍了 C# 语言的基础内容,包括基本语法、数据类型、变量和常量、运算符、控制结构以及方法等。这些基础知识是进一步学习 C# 编程的基石,通过不断实践和深入学习,你将能够利用 C# 开发出各种功能强大的应用程序。
相关文章:
C# 语言基础全面解析
.NET学习资料 .NET学习资料 .NET学习资料 一、引言 C# 是一种功能强大、面向对象且类型安全的编程语言,由微软开发,广泛应用于各种类型的软件开发,从桌面应用、Web 应用到游戏开发等领域。本文将全面介绍 C# 语言的基础知识,帮…...
MySQL的覆盖索引
MySQL的覆盖索引 前言 当一个索引包含了查询所需的全部字段时,就可以提高查询效率,这样的索引又被称之为覆盖索引。 以MySQL常见的三种存储引擎为例:InnoDB、MyISAM、Memory,对于覆盖索引提高查询效率的方式均不同,…...
Hutool工具类
Hutool 是一个非常流行的 Java 工具类库,它提供了丰富的功能来简化开发中的常见任务,比如文件操作、加密、日期处理、字符串操作、数据库工具等。它是一个轻量级的工具库,可以减少开发者编写常用代码的工作量,提高开发效率。 主要…...
C++模板编程——可变参函数模板之折叠表达式
目录 1. 什么是折叠表达式 2. 一元左折 3. 一元右折 4. 二元左折 5. 二元右折 6. 后记 上一节主要讲解了可变参函数模板和参数包展开,这一节主要讲一下折叠表达式。 1. 什么是折叠表达式 折叠表达式是C17中引入的概念,引入折叠表达式的目的是为了…...
使用MATLAB进行雷达数据采集可视化
本文使用轮趣科技N10雷达,需要源码可在后台私信或者资源自取 1. 项目概述 本项目旨在通过 MATLAB 读取 N10 激光雷达 的数据,并进行 实时 3D 点云可视化。数据通过 串口 传输,并经过解析后转换为 三维坐标点,最终使用 pcplayer 进…...
【Linux系统】信号:信号保存 / 信号处理、内核态 / 用户态、操作系统运行原理(中断)
理解Linux系统内进程信号的整个流程可分为: 信号产生 信号保存 信号处理 上篇文章重点讲解了 信号的产生,本文会讲解信号的保存和信号处理相关的概念和操作: 两种信号默认处理 1、信号处理之忽略 ::signal(2, SIG_IGN); // ignore: 忽略#…...
在C语言多线程环境中使用互斥量
如果有十个银行账号通过不同的十条线程同时向同一个账号转账时,如果没有很好的机制保证十个账号依次存入,那么这些转账可能出问题。我们可以通过互斥量来解决。 C标准库提供了这个互斥量,只需要引入threads.头文件。 互斥量就像是一把锁&am…...
PHP代码审计学习02
目录 代码审计一般思路 Beescms代码审计(upload) Finecms基于前台MVC任意文件上传挖掘思路 CLTPHP基于thinkphp5框架的文件上传挖掘思路 今天来看PHP有框架MVC类,文件上传,断点调试挖掘。 同样还是有关键字搜索和功能点抓包两…...
基于微信小程序的医院预约挂号系统设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
大厂面试题备份20250201
20250201 面试策略 如果三面往后遇到传说中让人忍受不了的业余面试官,就舔着苟过去,入职大概率见不着他,但一二面遇到,反问环节就主动说不够match,让释放流程。 机器/深度学习 百面机器学习 5.4 通用CS 计算机网…...
Spring Boot 实例解析:HelloWorld 探究
POM 文件剖析: 父项目: <parent><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐starter‐parent</artifactId><version>1.5.9.RELEASE</version> </parent> 他的父项目是 <…...
【课题推荐】基于t分布的非高斯滤波框架在水下自主导航中的应用研究
水下自主导航系统在海洋探测、环境监测及水下作业等领域具有广泛的应用。然而,复杂的水下环境常常导致传感器输出出现野值噪声,这些噪声会严重影响导航信息融合算法的精度,甚至导致系统发散。传统的卡尔曼滤波算法基于高斯噪声假设࿰…...
【C++语言】卡码网语言基础课系列----12. 位置互换
文章目录 练习题目位置互换具体代码实现 小白寄语诗词共勉 练习题目 位置互换 题目描述: 给定一个长度为偶数位的字符串,请编程实现字符串的奇偶位互换。 输入描述: 输入包含多组测试数据。 输入的第一行是一个整数n,表示有测试…...
洛谷的更多功能(不会像其他文章那样复杂且仅支持Edge浏览器)
第一步:下载《洛谷美化 (1).zip》文件夹。 会出现这样的文件夹: 注意:Edge.txt和洛谷前提1.txt是一样的哟! 第二步:篡改猴 先打开Edge.txt或者是洛谷前提1.txt文件,打开后复制粘贴到你的Edge浏览器并打开…...
C++编程语言:抽象机制:模板(Bjarne Stroustrup)
目录 23.1 引言和概观(Introduction and Overview) 23.2 一个简单的字符串模板(A Simple String Template) 23.2.1 模板的定义(Defining a Template) 23.2.2 模板实例化(Template Instantiation) 23.3 类型检查(Type Checking) 23.3.1 类型等价(Type Equivalence) …...
女生年薪12万,算不算属于高收入人群
在繁华喧嚣的都市中,我们时常会听到关于收入、高薪与生活质量等话题的讨论。尤其是对于年轻女性而言,薪资水平不仅关乎个人价值的体现,更直接影响到生活质量与未来的规划。那么,女生年薪12万,是否可以被划入高收入人群…...
2181、合并零之间的节点
2181、[中等] 合并零之间的节点 1、问题描述: 给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val 0 。 对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点ÿ…...
Immutable设计 SimpleDateFormat DateTimeFormatter
专栏系列文章地址:https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标: 理解不可变设计模式,时间format有线程安全要求的注意使用DateTimeFormatter 目录 ImmutableSimpleDateFormat 非线程安全可以synchronized解决&a…...
【网络】传输层协议TCP(重点)
文章目录 1. TCP协议段格式2. 详解TCP2.1 4位首部长度2.2 32位序号与32位确认序号(确认应答机制)2.3 超时重传机制2.4 连接管理机制(3次握手、4次挥手 3个标志位)2.5 16位窗口大小(流量控制)2.6 滑动窗口2.7 3个标志位 16位紧急…...
17.[前端开发]Day17-形变-动画-vertical-align
1 transform CSS属性 - transform transform的用法 表示一个或者多个 不用记住全部的函数,只用掌握这四个常用的函数即可 位移 - translate <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta ht…...
LeetCode435周赛T2贪心
题目描述 给你一个由字符 N、S、E 和 W 组成的字符串 s,其中 s[i] 表示在无限网格中的移动操作: N:向北移动 1 个单位。S:向南移动 1 个单位。E:向东移动 1 个单位。W:向西移动 1 个单位。 初始时&#…...
陆游的《诗人苦学说》:从藻绘到“功夫在诗外”(中英双语)mastery lies beyond poetry
陆游的《诗人苦学说》:从藻绘到“功夫在诗外” 今天看万维钢的《万万没想到》一书,看到陆游的功夫在诗外的句子,特意去查找这首诗的原文。故而有此文。 我国学人还往往过分强调“功夫在诗外”这句陆游的名言,认为提升综合素质是一…...
AI模型平台之——ModelScope(魔搭)
ModelScope 是什么? ModelScope 是一个由阿里巴巴达摩院推出的开源模型库和工具集,旨在为开发者提供高效、便捷的机器学习模型和工具。ModelScope 提供了丰富的预训练模型、数据集和工具,支持多种任务和应用场景,如自然语言处理、…...
GIt使用笔记大全
Git 使用笔记大全 1. 安装 Git 在终端或命令提示符中,输入以下命令检查是否已安装 Git: git --version如果未安装,可以从 Git 官方网站 下载并安装适合你操作系统的版本。 2. 配置 Git 首次使用 Git 时,需要配置用户名和邮箱…...
42【文件名的编码规则】
我们在学习的过程中,写出数据或读取数据时需要考虑编码类型 火山采用:UTF-16 易语言采用:GBK php采用:UTF-8 那么我们写出的文件名应该是何种编码的?比如火山程序向本地写出一个“测试.txt”,理论上这个“测…...
Linux网络 HTTPS 协议原理
概念 HTTPS 也是一个应用层协议,不过 是在 HTTP 协议的基础上引入了一个加密层。因为 HTTP的内容是明文传输的,明文数据会经过路由器、wifi 热点、通信服务运营商、代理服务器等多个物理节点,如果信息在传输过程中被劫持,传输的…...
Vue.js组件开发-实现全屏手风琴幻灯片切换特效
使用 Vue 实现全屏手风琴幻灯片切换特效 步骤概述 创建 Vue 项目:使用 Vue CLI 创建一个新的 Vue 项目。设计组件结构:创建一个手风琴幻灯片组件,包含幻灯片项和切换逻辑。实现样式:使用 CSS 实现全屏和手风琴效果。添加交互逻辑…...
数据库、数据仓库、数据湖有什么不同
数据库、数据仓库和数据湖是三种不同的数据存储和管理技术,它们在用途、设计目标、数据处理方式以及适用场景上存在显著差异。以下将从多个角度详细说明它们之间的区别: 1. 数据结构与存储方式 数据库: 数据库主要用于存储结构化的数据&…...
MLM之MiniCPM-o:MiniCPM-o的简介(涉及MiniCPM-o 2.6和MiniCPM-V 2.6)、安装和使用方法、案例应用之详细攻略
MLM之MiniCPM-o:MiniCPM-o的简介(涉及MiniCPM-o 2.6和MiniCPM-V 2.6)、安装和使用方法、案例应用之详细攻略 目录 MiniCPM-o的简介 0、更新日志 1、MiniCPM-o系列模型特点 MiniCPM-o 2.6 的主要特点 MiniCPM-V 2.6的主要特点 2、MiniCPM-o系列模型架构 MiniC…...
【Conda 和 虚拟环境详细指南】
Conda 和 虚拟环境的详细指南 什么是 Conda? Conda 是一个开源的包管理和环境管理系统,支持多种编程语言(如Python、R等),最初由Continuum Analytics开发。 主要功能: 包管理:安装、更新、删…...
Rust 控制流语法详解
Rust 控制流语法详解 控制流是编程语言中用于控制代码执行顺序的重要机制。Rust 提供了多种控制流语法,包括条件判断(if、else if)、循环(loop、while、for)等。本文将详细介绍这些语法,并通过示例展示它们…...
VLC-Qt: Qt + libVLC 的开源库
参考链接 https://blog.csdn.net/u012532263/article/details/102737874...
洛谷 P5146 最大差值 C语言
P5146 最大差值 - 洛谷 | 计算机科学教育新生态 题目描述 HKE 最近热衷于研究序列,有一次他发现了一个有趣的问题: 对于一个序列 A1,A2,…,An,找出两个数 i,j(1≤i<j≤n),使得 Aj−Ai 最大。…...
Zabbix 推送告警 消息模板 美化(钉钉Webhook机器人、邮件)
目前网络上已经有很多关于Zabbix如何推送告警信息到钉钉机器人、到邮件等文章。 但是在搜索下来,发现缺少了对告警信息的美化的文章。 本文不赘述如何对Zabbix对接钉钉、对接邮件,仅介绍我采用的美化消息模板的内容。 活用AI工具可以减轻很多学习、脑力负…...
MySQL数据库环境搭建
下载MySQL 官网:https://downloads.mysql.com/archives/installer/ 下载社区版就行了。 安装流程 看b站大佬的视频吧:https://www.bilibili.com/video/BV12q4y1477i/?spm_id_from333.337.search-card.all.click&vd_source37dfd298d2133f3e1f3e3c…...
书生大模型实战营7
文章目录 L1——基础岛提示词工程实践什么是Prompt(提示词)什么是提示工程提示设计框架CRISPECO-STAR LangGPT结构化提示词LangGPT结构编写技巧构建全局思维链保持上下文语义一致性有机结合其他 Prompt 技巧 常用的提示词模块 浦语提示词工程实践(LangGPT版)自动化生成LangGPT提…...
Spark的基本概念
个人博客地址:Spark的基本概念 | 一张假钞的真实世界 编程接口 RDD:弹性分布式数据集(Resilient Distributed Dataset )。Spark2.0之前的编程接口。Spark2.0之后以不再推荐使用,而是被Dataset替代。Datasetÿ…...
langchain基础(二)
一、输出解析器(Output Parser) 作用:(1)让模型按照指定的格式输出; (2)解析模型输出,提取所需的信息 1、逗号分隔列表 CommaSeparatedListOutputParser:…...
读取要素类中的几何信息
在arcpy中,每个要素都有相关的集合对象,都可以在游标中访问.本节将使用SearchCursor和Polyon对象来读取面要素类几何信息. 操作方法 1.打开IDLE,新建一个脚本 2.导入arcpy模块 3.设置输入要素类为目标面要素类 infc "<>" 4.传入输入要素类创建SearchCurs…...
洛谷 P1130 红牌 C语言
题目描述 某地临时居民想获得长期居住权就必须申请拿到红牌。获得红牌的过程是相当复杂,一共包括 N 个步骤。每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件。为了加快进程,每一步政府都派了 M 个工作人员来检查材料。不幸的是&…...
五. Redis 配置内容(详细配置说明)
五. Redis 配置内容(详细配置说明) 文章目录 五. Redis 配置内容(详细配置说明)1. Units 单位配置2. INCLUDES (包含)配置3. NETWORK (网络)配置3.1 bind(配置访问内容)3.2 protected-mode (保护模式)3.3 port(端口)配置3.4 timeout(客户端超时时间)配置3.5 tcp-keepalive()配置…...
LeetCode题练习与总结:有效三角形的个数--611
一、题目描述 给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。 示例 1: 输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3示例 2: 输入: nums [4,2,3,4] 输出: 4 提示: 1 &…...
【multi-agent-system】ubuntu24.04 安装uv python包管理器及安装依赖
uv包管理器是跨平台的 参考sudo apt-get update sudo apt-get install -y build-essential我的开发环境是ubuntu24.04 (base) root@k8s-master-pfsrv:/home/zhangbin/perfwork/01_ai/08_multi-agent-system# uv venv 找不到命令 “uv”,但可以通过以下软件...
【自然语言处理(NLP)】深度学习架构:Transformer 原理及代码实现
文章目录 介绍Transformer核心组件架构图编码器(Encoder)解码器(Decoder) 优点应用代码实现导包基于位置的前馈网络残差连接后进行层规范化编码器 Block编码器解码器 Block解码器训练预测 个人主页:道友老李 欢迎加入社…...
STM32单片机学习记录(2.2)
一、STM32 13.1 - PWR简介 1. PWR(Power Control)电源控制 (1)PWR负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能; (2)可编程电压监测器(…...
毕业设计:基于卷积神经网络的鲜花花卉种类检测算法研究
目录 前言 课题背景和意义 实现技术思路 一、算法理论基础 1.1 卷积神经网络 1.2目标检测算法 二、 数据集 2.1 数据集 2.2 数据扩充 三、实验及结果分析 3.1 实验环境搭建 3.2 模型训练 最后 前言 📅大四是整个大学期间最忙碌的时光,一边要忙着备考或…...
DeepSeek-R1模型1.5b、7b、8b、14b、32b、70b和671b有啥区别?
deepseek-r1的1.5b、7b、8b、14b、32b、70b和671b有啥区别?码笔记mabiji.com分享:1.5B、7B、8B、14B、32B、70B是蒸馏后的小模型,671B是基础大模型,它们的区别主要体现在参数规模、模型容量、性能表现、准确性、训练成本、推理成本…...
云原生(五十三) | SQL查询操作
文章目录 SQL查询操作 一、数据库DDL操作 1、登陆数据库 2、创建DB数据库 二、数据表DDL操作 1、创建数据表 2、RDS中SQL查询操作 三、SQL查询操作 1、RDS中SQL查询操作 SQL查询操作 一、数据库DDL操作 1、登陆数据库 2、创建DB数据库 创建一个普通账号,…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_strerror_init()函数
目录 ngx_strerror_init()函数声明 ngx_int_t 类型声明定义 intptr_t 类型 ngx_strerror_init()函数实现 NGX_HAVE_STRERRORDESC_NP ngx_strerror_init()函数声明 在 nginx.c 的开头引入了: #include <ngx_core.h> 在 ngx_core.h 中引入了 #include <ngx_er…...
【HTML入门】Sublime Text 4与 Phpstorm
文章目录 前言一、环境基础1.Sublime Text 42.Phpstorm(1)安装(2)启动Phpstorm(3)“启动”码 二、HTML1.HTML简介(1)什么是HTML(2)HTML版本及历史(3)HTML基本结构 2.HTML简单语法(1)HTML标签语法(2)HTML常用标签(3)表格(4)特殊字符 总结 前言 在当今的软件开发领域,…...