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# 开发出各种功能强大的应用程序。

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

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

相关文章

DNS缓存详解(DNS Cache Detailed Explanation)

DNS缓存详解 清空DNS缓存可以让网页访问更快捷。本文将从什么是DNS缓存、为什么清空DNS缓存、如何清空DNS缓存、清空DNS缓存存在的问题四个方面详细阐述DNS缓存清空的相关知识。 一、什么是DNS缓存 1、DNS缓存的定义&#xff1a; DNS缓存是域名系统服务在遇到DNS查询时自动…

OFDM系统仿真

1️⃣ OFDM的原理 1.1 介绍 OFDM是一种多载波调制技术&#xff0c;将输入数据分配到多个子载波上&#xff0c;每个子载波上可以独立使用 QAM、PSK 等传统调制技术进行调制。这些子载波之间互相正交&#xff0c;从而可以有效利用频谱并减少干扰。 1.2 OFDM的核心 多载波调制…

第11章:根据 ShuffleNet V2 迁移学习医学图像分类任务:甲状腺结节检测

目录 1. Shufflenet V2 2. 甲状腺结节检测 2.1 数据集 2.2 训练参数 2.3 训练结果 2.4 可视化网页推理 3. 下载 1. Shufflenet V2 shufflenet v2 论文中提出衡量轻量级网络的性能不能仅仅依靠FLOPs计算量&#xff0c;还应该多方面的考虑&#xff0c;例如MAC(memory acc…

网络编程套接字(中)

文章目录 &#x1f34f;简单的TCP网络程序服务端创建套接字服务端绑定服务端监听服务端获取连接服务端处理请求客户端创建套接字客户端连接服务器客户端发起请求服务器测试单执行流服务器的弊端 &#x1f350;多进程版的TCP网络程序捕捉SIGCHLD信号让孙子进程提供服务 &#x1…

happytime

happytime 一、查壳 无壳&#xff0c;64位 二、IDA分析 1.main 2.cry函数 总体&#xff1a;是魔改的XXTEA加密 在main中可以看到被加密且分段的flag在最后的循环中与V6进行比较&#xff0c;刚好和上面v6数组相同。 所以毫无疑问密文是v6. 而与flag一起进入加密函数的v5就…

DIFY源码解析

偶然发现Github上某位大佬开源的DIFY源码注释和解析&#xff0c;目前还处于陆续不断更新地更新过程中&#xff0c;为大佬的专业和开源贡献精神点赞。先收藏链接&#xff0c;后续慢慢学习。 相关链接如下&#xff1a; DIFY源码解析

Hot100之子串

560和为K的子数组 题目 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列 思路解析 ps&#xff1a;我们的presum【0】就是0&#xff0c;如果没有这个0的话我们的第一个元素就无法减去上…

网络工程师 (11)软件生命周期与开发模型

一、软件生命周期 前言 软件生命周期&#xff0c;也称为软件开发周期或软件开发生命周期&#xff0c;是指从软件项目的启动到软件不再被使用为止的整个期间。这个过程可以细分为多个阶段&#xff0c;每个阶段都有其特定的目标、任务和产出物。 1. 问题定义与需求分析 问题定义…

【Linux】使用管道实现一个简易版本的进程池

文章目录 使用管道实现一个简易版本的进程池流程图代码makefileTask.hppProcessPool.cc 程序流程&#xff1a; 使用管道实现一个简易版本的进程池 流程图 代码 makefile ProcessPool:ProcessPool.ccg -o $ $^ -g -stdc11 .PHONY:clean clean:rm -f ProcessPoolTask.hpp #pr…

MYSQL--一条SQL执行的流程,分析MYSQL的架构

文章目录 第一步建立连接第二部解析 SQL第三步执行 sql预处理优化阶段执行阶段索引下推 执行一条select 语句中间会发生什么&#xff1f; 这个是对 mysql 架构的深入理解。 select * from product where id 1;对于mysql的架构分层: mysql 架构分成了 Server 层和存储引擎层&a…

基于Spring Security 6的OAuth2 系列之七 - 授权服务器--自定义数据库客户端信息

之所以想写这一系列&#xff0c;是因为之前工作过程中使用Spring Security OAuth2搭建了网关和授权服务器&#xff0c;但当时基于spring-boot 2.3.x&#xff0c;其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0&#xff0c;结果一看Spring Security也升级…

深入剖析C语言字符串操作函数:my_strlen与my_strcpy

在C语言的编程世界里&#xff0c;字符串操作是日常开发中极为常见的任务。熟练掌握字符串操作函数&#xff0c;不仅能够提高代码的效率和可读性&#xff0c;还能为解决各种实际问题提供有力的支持。本文将深入剖析两个自定义的字符串操作函数&#xff1a; my_strlen 和 my_strc…

《苍穹外卖》项目学习记录-Day10来单提醒

type&#xff1a;用来标识消息的类型&#xff0c;比如说type1表示来单提醒&#xff0c;type2表示客户催单。 orderId&#xff1a;表示订单id&#xff0c;因为不管是来单提醒还是客户催单&#xff0c;这一次提醒都对应一个订单。是用户下了某个单或者催促某个订单&#xff0c;这…

数据结构与算法之栈: LeetCode 2042. 检查句子中的数字是否递增 (Ts版)

检查句子中的数字是否递增 https://leetcode.cn/problems/check-if-numbers-are-ascending-in-a-sentence/description/ 描述 句子是由若干 token 组成的一个列表&#xff0c;token 间用 单个 空格分隔&#xff0c;句子没有前导或尾随空格。每个 token 要么是一个由数字 0-9 …

fpga系列 HDL:XILINX Vivado Vitis 高层次综合(HLS) 实现 EBAZ板LED控制(上)

目录 创建工程创建源文件并编写C代码C仿真综合仿真导出RTL CG导出RTL错误处理&#xff1a; 创建工程 创建源文件并编写C代码 创建源文件(Souces下的hlsv.h和hlsv.cpp&#xff0c;Test Bench下的test_hlsv1.cpp)&#xff1a; hlsv1.h #ifndef HLSV1 #define HLSV1 #include &l…

JVM栈溢出线上环境排查

#查看当前Linux系统进程ID、线程ID、CPU占用率&#xff08;-eo后面跟想要展示的列&#xff09; ps H -eo pid,tid,%cpups H -eo pid,tid,%cpu |grep tid #使用java jstack 查看进程id下所有线程id的情况 jstack pid 案例2 通过jstack 排查死锁问题 #启动java代码 jstack 进…

91,【7】 攻防世界 web fileclude

进入靶场 <?php // 包含 flag.php 文件 include("flag.php");// 以高亮语法显示当前文件&#xff08;即包含这段代码的 PHP 文件&#xff09;的内容 // 方便查看当前代码结构和逻辑&#xff0c;常用于调试或给解题者提示代码信息 highlight_file(__FILE__);// 检…

Joplin 插件在Vscode中无法显示图片

1.问题 在vscode里面装好joplin插件之后&#xff0c;无法显示图片内容。 粘贴的图片可以再vscode中显示&#xff0c;无法再joplin客户端显示 2.解决方法 这种情况是因为和vscode自带的MD编辑器的预览模式有冲突&#xff0c;或者没用通过专用方式上传图片。 方法一&#xff…

FreeRTOS从入门到精通 第十七章(软件定时器)

参考教程&#xff1a;【正点原子】手把手教你学FreeRTOS实时系统_哔哩哔哩_bilibili 一、软件定时器简介 1、定时器的概念与种类 &#xff08;1&#xff09;定时器的概念&#xff1a;从指定的时刻开始&#xff0c;经过一个指定时间&#xff0c;然后触发一个超时事件&#xf…

2025年美赛B题-结合Logistic阻滞增长模型和SIR传染病模型研究旅游可持续性-成品论文

模型设计思路与创新点&#xff1a; 建模的时候应该先确定我们需要建立什么类的模型&#xff1f;优化类还是统计类&#xff1f;这个题需要大量的数据分析&#xff0c;因此我们可以建立一个统计学模型。 统计学建模思路&#xff1a;观察规律&#xff0c;建立模型&#xff0c;参…