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# 语言的基础知识,帮…...
[原创](Modern C++)现代C++的关键性概念: 流格式化
常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse、C Bui…...
《数据可视化新高度:Graphy的AI协作变革》
在数据洪流奔涌的时代,企业面临的挑战不再仅仅是数据的收集,更在于如何高效地将数据转化为洞察,助力决策。Graphy作为一款前沿的数据可视化工具,凭借AI赋能的团队协作功能,为企业打开了数据协作新局面,重新…...
C++并发:设计无锁数据结构
只要摆脱锁,实现支持安全并发访问的数据结构,就有可能解决大粒度锁影响并发程度以及错误的加锁方式导致死锁的问题。这种数据结构称为无锁数据结构。 在了解本文时,务必读懂内存次序章节。 在设计无锁数据结构时,需要极为小心谨…...

蓝桥杯刷题DAY2:二维前缀和 一维前缀和 差分数组
闪耀的灯光 📌 题目描述 蓝桥公园是一个适合夜间散步的好地方,公园可以被视为由 n m 个矩形区域构成。每个区域都有一盏灯,初始亮度为 a[i][j]。 小蓝可以选择一个大的矩形区域,并按下开关一次,这将使得该区域内每盏…...
雷电等基于VirtualBox的Android模拟器映射串口和测试CSerialPort串口功能
雷电等基于VirtualBox的Android模拟器映射串口和测试CSerialPort串口功能 1. 修改VirtualBox配置文件映射串口 模拟器配置文件vms/leidian0/leidian.vbox。 在UART标签下增加(修改完成后需要将leidian.vbox修改为只读) <Port slot"1" enabled"true"…...
四、jQuery笔记
(一)jQuery概述 jQuery本身是js的一个轻量级的库,封装了一个对象jQuery,jquery的所有语法都在jQuery对象中 浏览器不认识jquery,只渲染html、css和js代码,需要先导入jQuery文件,官网下载即可 jQuery中文说明文档:https://hemin.cn/jq/ (二)jQuery要点 1、jQuery对象 …...

流浪 Linux: 外置 USB SSD 安装 ArchLinux
注: ArchLinux 系统为滚动更新, 变化很快, 所以本文中的安装方法可能很快就过时了, 仅供参考. 实际安装时建议去阅读官方文档. 最近, 突然 (也没有那么突然) 有了一大堆 PC: 4 个笔记本, 2 个台式主机 (M-ATX 主板), 1 个小主机 (迷你主机). 嗯, 多到用不过来. 但是, 窝又不能…...

1.For New TFLite Beginner
一、 Getting Started for ML Beginners This document explains how to use machine learning to classify (categorize) Iris flowers by species. This document dives deeply into the TensorFlow code to do exactly that, explaining ML fundamentals along the way. If…...

吊打同类软件免费又可批量使用
聊一聊 对于经常用到席卡的人来说,每次打印都觉得麻烦,要是有个软件,直接输入名称就能打印就好了。 这不,只要你想,就肯定能实现;如果没实现,就说明你不够想。 这个软件我测试了下࿰…...
MiniMind——跑通项目
文章目录 📌 Quick Start Train MiniMind (ModelScope) # step 1 git clone https://huggingface.co/jingyaogong/minimind-v1# step 2 python 2-eval.py或者启动streamlit,启动网页聊天界面 「注意」需要python>3.10,安装 pip install s…...

单细胞-第五节 多样本数据分析,打分R包AUCell
文件在单细胞\5_GC_py\1_single_cell\3.AUCell.Rmd 1.基因 rm(list = ls()) load("g.Rdata")2.AUCell https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9897923 IF: NA NA NA用这个文章里的方法,将单细胞亚群的marker基因与ros相关基因取交集,用作AUCell的基因集…...

【零拷贝】
目录 一:了解IO基础概念 二:数据流动的层次结构 三:零拷贝 1.传统IO文件读写 2.mmap 零拷贝技术 3.sendFile 零拷贝技术 一:了解IO基础概念 理解CPU拷贝和DMA拷贝 我们知道,操作系统对于内存空间&…...
深入解析 C++ 字符串处理:提取和分割的多种方法
在 C 编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时。本文将详细探讨如何使用 C 标准库中的工具(如 std::istringstream 和 std::string 的成员函数)来提取和分割字符串,并分析不同方法的适…...
计算机组成原理——存储系统(一)
在人生的道路上,成功与失败交织成一幅丰富多彩的画卷。不论我们是面对胜利的喜悦,还是遭遇失败的痛苦,都不能放弃对梦想的追求。正是在这种追求中,我们不断地超越自我,不断地突破自己的极限。只有勇往直前,…...

Jenkins未在第一次登录后设置用户名,第二次登录不进去怎么办?
Jenkins在第一次进行登录的时候,只需要输入Jenkins\secrets\initialAdminPassword中的密码,登录成功后,本次我们没有修改密码,就会导致后面第二次登录,Jenkins需要进行用户名和密码的验证,但是我们根本就没…...
论文和代码解读:RF-Inversion 图像/视频编辑技术
Diffusion Models专栏文章汇总:入门与实战 前言:Rectified Flow的反演和DDIM这些不太一样,上一篇博客中介绍了腾讯提出的一种方法《基于Rectified Flow FLUX的图像编辑方法 RF-Solver》,主要就是用泰勒展开和一阶导数近似来分解反演公式。这篇博客介绍谷歌提出的方法RF-Inv…...

大模型培训讲师老师叶梓分享:DeepSeek多模态大模型janus初探
以下视频内容为叶梓分享DeepSeek多模态大模型janus的部署,并验证其实际效果,包括图生文和文生图两部分。 叶梓老师人工智能培训分享DeepSeek多模态大模型janus初探 DeepSeek 的多模态大模型 Janus 是一款强大的 AI 模型,专注于图像和文本的多…...

2025最新源支付V7全套开源版+Mac云端+五合一云端
2025最新源支付V7全套开源版Mac云端五合一云端 官方1999元, 最新非网上那种功能不全带BUG开源版,可以自己增加授权或二开 拥有卓越的性能和丰富的功能。它采用全新轻量化的界面UI,让您能更方便快捷地解决知识付费和运营赞助的难题 它基于…...

稀疏混合专家架构语言模型(MoE)
注:本文为 “稀疏混合专家架构语言模型(MoE)” 相关文章合辑。 手把手教你,从零开始实现一个稀疏混合专家架构语言模型(MoE) 机器之心 2024年02月11日 12:21 河南 选自huggingface 机器之心编译 机器之心…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...