1. 基础语法结构

C# 程序由命名空间、类和方法组成。每个程序必须有一个 Main 方法作为入口点。using 指令用于导入命名空间,Console.WriteLine() 是常用的输出方法。

csharp

复制

下载

using System;  // 引入核心命名空间class Program  // 类定义
{static void Main()  // 程序入口方法{Console.WriteLine("Hello C#!");  // 控制台输出}
}

2. 数据类型

C# 是强类型语言,所有变量必须声明类型:

类型示例说明
intint age = 25;32位整数,范围: -2³¹ 到 2³¹-1
doubledouble pi = 3.14;64位双精度浮点数
boolbool isActive = true;布尔值(true/false)
charchar symbol = '#';单个Unicode字符
stringstring name = "Alice";Unicode字符串
decimaldecimal price = 19.99m;128位精确十进制数,适合金融计算

3. 变量与常量
  • 变量:存储可变值,使用前必须声明类型

  • 常量:使用 const 声明,值不可变

  • 类型推断var 关键字让编译器推断类型

csharp

复制

下载

int counter = 10;          // 显式类型声明
const double TAX_RATE = 0.2;  // 常量
var message = "Hello";     // 编译器推断为string类型

4. 运算符

C# 包含多种运算符类型:

  • 算术运算符+-*/%

  • 比较运算符==!=><>=<=

  • 逻辑运算符&& (AND), || (OR), ! (NOT)

  • 赋值运算符=+=-=*=

csharp

复制

下载

int x = 15, y = 4;
double quotient = x / (double)y;  // 3.75 (需类型转换)
bool isEven = (x % 2 == 0);       // 检查偶数

5. 控制流程

控制程序执行流程的结构:

条件语句

csharp

复制

下载

int temperature = 22;if (temperature > 30)Console.WriteLine("炎热");
else if (temperature > 20)Console.WriteLine("舒适");  // 输出此项
elseConsole.WriteLine("凉爽");

循环语句

csharp

复制

下载

// for 循环:精确控制迭代次数
for (int i = 1; i <= 5; i++) {Console.Write(i + " ");  // 输出: 1 2 3 4 5
}// while 循环:条件满足时执行
int count = 3;
while (count > 0) {Console.Write(count-- + " ");  // 输出: 3 2 1
}

6. 数组

存储相同类型元素的集合:

  • 一维数组:线性数据集合

  • 多维数组:表格结构数据

  • 索引从0开始

csharp

复制

下载

// 一维数组
string[] colors = { "红", "绿", "蓝" };
Console.WriteLine(colors[0]);  // 输出"红"// 二维数组
int[,] grid = { {1, 2}, {3, 4}, {5, 6} };
Console.WriteLine(grid[2, 0]);  // 输出5

7. 方法(函数)

封装可重用代码块:

  • 可接收参数

  • 可返回结果

  • 提高代码复用性

csharp

复制

下载

// 方法定义
static double CalculateCircleArea(double radius)
{return Math.PI * radius * radius;
}// 方法调用
double area = CalculateCircleArea(5.0);
Console.WriteLine($"圆面积: {area:F2}");  // 输出: 圆面积: 78.54

8. 类与对象

面向对象编程的核心:

  • :对象的蓝图模板

  • 对象:类的具体实例

  • 属性:描述对象特征

  • 方法:对象的行为

csharp

复制

下载

class Book
{// 属性public string Title { get; set; }public string Author { get; set; }// 方法public void DisplayInfo() {Console.WriteLine($"《{Title}》, 作者: {Author}");}
}// 创建对象
Book myBook = new Book();
myBook.Title = "C#入门经典";
myBook.Author = "John Doe";
myBook.DisplayInfo();  // 输出书籍信息

9. 继承与多态

OOP 的核心特性:

  • 继承:子类继承父类特性

  • 多态:不同对象对同一消息有不同响应

  • 方法重写:使用 virtual 和 override

csharp

复制

下载

class Vehicle  // 基类
{public virtual void StartEngine() {Console.WriteLine("引擎启动");}
}class Car : Vehicle  // 继承
{public override void StartEngine()  // 方法重写{Console.WriteLine("汽车引擎启动");}
}// 多态示例
Vehicle myVehicle = new Car();
myVehicle.StartEngine();  // 输出"汽车引擎启动"

10. 异常处理

处理运行时错误的机制:

  • try:包含可能出错的代码

  • catch:捕获并处理异常

  • finally:无论是否异常都会执行

csharp

复制

下载

try
{int[] nums = { 1, 2, 3 };Console.WriteLine(nums[5]);  // 索引超出范围
}
catch (IndexOutOfRangeException ex)  // 捕获特定异常
{Console.WriteLine($"错误: {ex.Message}");
}
catch (Exception ex)  // 通用异常捕获
{Console.WriteLine($"未知错误: {ex.Message}");
}
finally
{Console.WriteLine("清理资源完成");
}

11. 字符串操作

字符串是引用类型,常用操作:

  • 拼接:+ 或 $"{}"

  • 格式化:ToUpper()ToLower()

  • 查询:Contains()IndexOf()

  • 截取:Substring()

csharp

复制

下载

string greeting = "   Hello C#   ";
Console.WriteLine(greeting.Trim());        // 移除空格: "Hello C#"
Console.WriteLine(greeting.ToUpper());     // 转大写: "   HELLO C#   "
Console.WriteLine(greeting.Contains("C#")); // 检查包含: True
Console.WriteLine($"长度: {greeting.Length}"); // 字符串插值

12. 集合类型

System.Collections.Generic 命名空间提供:

  • List<T>:动态数组

  • Dictionary<TKey,TValue>:键值对集合

  • Queue<T>:先进先出队列

  • Stack<T>:后进先出堆栈

csharp

复制

下载

using System.Collections.Generic;// List示例
List<int> numbers = new List<int> { 10, 20, 30 };
numbers.Add(40);
Console.WriteLine($"第二个元素: {numbers[1]}");  // 20// Dictionary示例
Dictionary<string, int> ages = new Dictionary<string, int>();
ages.Add("Alice", 28);
ages["Bob"] = 32;  // 另一种添加方式
Console.WriteLine($"Alice的年龄: {ages["Alice"]}");

完整案例:学生成绩管理系统

csharp

复制

下载

using System;
using System.Collections.Generic;class Student
{public string Name { get; set; }public List<int> Grades { get; } = new List<int>();public void AddGrade(int grade) {if (grade < 0 || grade > 100)throw new ArgumentException("成绩必须在0-100之间");Grades.Add(grade);}public double CalculateAverage(){if (Grades.Count == 0) return 0;double sum = 0;foreach (int grade in Grades)sum += grade;return sum / Grades.Count;}
}class Program
{static void Main(){try{Student student = new Student { Name = "张三" };student.AddGrade(85);student.AddGrade(92);student.AddGrade(78);Console.WriteLine($"{student.Name}的平均成绩: {student.CalculateAverage():F1}");}catch (Exception ex){Console.WriteLine($"错误: {ex.Message}");}}
}

程序说明

  1. 创建 Student 类管理学生信息和成绩

  2. 使用 List<int> 存储多个成绩

  3. 实现成绩添加和平均分计算方法

  4. 添加异常处理确保成绩有效性

  5. 主程序创建学生对象并计算平均分

输出

text

复制

下载

张三的平均成绩: 85.0

关键概念总结

概念说明
面向对象封装、继承、多态三大特性,使用类(class)和对象(object)构建程序
类型系统值类型(int, struct)直接存储值,引用类型(class, string)存储内存地址
内存管理自动垃圾回收(GC),using 语句管理资源释放
核心特性属性(Properties)、索引器、委托(Delegates)、事件(Events)
高级功能LINQ(语言集成查询)、异步编程(async/await)、反射(Reflection)
开发框架.NET Framework/.NET Core,支持控制台、Web(ASP.NET)、桌面(WinForms/WPF)等应用

学习路线建议

  1. 掌握基础语法和OOP概念

  2. 学习常用.NET类库(集合、文件IO、网络)

  3. 实践数据库操作(ADO.NET/Entity Framework)

  4. 探索高级主题(异步编程、LINQ、依赖注入)

  5. 构建实际项目(Web API、桌面应用)

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

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

相关文章

C#最佳实践:为何要统一命名

C#最佳实践:为何要统一命名 在 C# 编程的世界里,代码就像是一座庞大的数字城市,而命名则是城市中纵横交错的街道名称与建筑标识。如果没有统一的命名规范,这座城市将陷入混乱,开发者在其中探索、维护代码时也会迷失方向。统一命名不仅是一种编程习惯,更是保障代码质量、…

通过后端连接Opengauss数据库的方法

文章目录 通过后端连接Opengauss数据库的方法一、为什么默认不能访问&#xff1f;二、要让普通用户从宿主机访问数据库&#xff0c;需要以下几个步骤&#xff1a;1. 使用 omm 超级用户登录数据库2. 创建一个应用程序专用用户&#xff0c;并设置密码3. 提供给应用程序专用用户对…

AWS Config:概述、优势以及如何开始?

在当今云原生架构快速发展的背景下&#xff0c;越来越多企业意识到资源配置管理和合规性审查的重要性。作为 AWS 官方授权代理商&#xff0c;在云上致力于为企业客户提供全面、可靠的云服务解决方案&#xff0c;帮助企业轻松上云、合规运营。本文将为您详细解读 AWS Config ——…

金融领域LLM开源测试集

BizFinBench 中文 金融业务场景基准数据集 结合迭代校准评估框架IteraJudge&#xff0c;对25个先进LLM进行全面评估&#xff0c;发现在金融AI领域与人类期望存在显著性能差距。 https://arxiv.org/pdf/2505.19457 https://github.com/HiThink-Research/BizFinBench/tree/m…

跨语言RPC:使用Java客户端调用Go服务端的JSON-RPC服务

在分布式系统开发中&#xff0c;不同编程语言之间进行通信是一个常见的需求。通过远程过程调用&#xff08;RPC&#xff09;技术&#xff0c;我们可以让不同的程序像调用本地方法一样调用远程的服务。本文将介绍如何使用Go语言编写一个简单的JSON-RPC服务&#xff0c;并使用Jav…

UE5 创建AI控制器、AI行为树和黑板

UE5 创建AI控制器、AI行为树和黑板 一、创建AI控制器AIController&#xff08;大脑&#xff09; 二、创建AI行为树和黑板 1&#xff1a;AI人工智能 2&#xff1a;行为树 3&#xff1a;黑板 三、AI行为树蓝图和添加黑板 1&#xff1a;添加黑板&#xff08;脑电波&#xff09;…

CDN加速导致CLS升高图片托管服务器的3个选择标准!

许多网站为了提升加载速度&#xff0c;会采用CDN加速服务分发图片等静态资源 这样做可能导致CLS&#xff08;累积布局偏移&#xff09;指标升高&#xff0c;拖累SEO评分。 这一问题通常源于CDN的异步加载机制或图片尺寸未预定义&#xff0c;使得页面布局在渲染过程中频繁变动。…

MySQL(77)如何设置自动备份任务?

设置自动备份任务可以确保你的数据库定期备份&#xff0c;防止数据丢失。以下是如何使用 Bash 脚本和 Cron 任务在 Linux 系统上设置 MySQL 数据库的自动备份任务的详细步骤和代码示例。 1. 编写备份脚本 首先&#xff0c;我们需要编写一个备份脚本。这个脚本将包含执行备份的…

.NET 开发中全局数据存储的几种方式

文章目录 一、静态类与静态成员实现方式特点优缺点 二、应用程序配置系统1. appsettings.json (ASP.NET Core)使用方式2. 用户设置 (WinForms/WPF)特点 三、依赖注入容器ASP.NET Core 示例特点 四、内存缓存 (IMemoryCache)实现方式特点 五、分布式缓存 (IDistributedCache)实现…

人才争夺战关键期,AI如何赋能招聘效率倍增、精准选拔

数智化转型浪潮席卷全球的今天&#xff0c;人才作为企业核心竞争力的地位日益凸显。而在传统招聘流程&#xff0c;尤其是面试环节正面临效率瓶颈、体验短板等多项挑战&#xff0c;典型如&#xff1a; 耗时冗长的筛选与安排&#xff1b;难以避免的主观评价偏差&#xff1b;海量…

介绍下分布式ID的技术实现及应用场景

什么是分布式ID 分布式ID是指在分布式系统中生成的特定范围内唯一的标识符&#xff0c;如订单号、商品ID、链路追踪TraceID。 随着业务发展&#xff0c;对分布式ID的要求越来越高&#xff0c;其中最基本的要求如下 全局唯一&#xff1a;在任何节点、任何时间生成的ID都必须是…

【leetcode-字母异位词分组】

排序法 public List<List<String>> groupAnagrams(String[] strs) {//最终值List<List<String>> result new ArrayList<>();//排序法HashMap<String,List<String>> map new HashMap<>(); //遍历strfor(String str : strs){/…

langchain从入门到精通(九)——ChatGPT/Playground手动模拟记忆功能

1. 摘要缓冲混合记忆 摘要缓冲混合记忆中&#xff0c;所需的模块有&#xff1a; chat_message_history&#xff1a;存储历史消息列表。moving_summary_buffer&#xff1a;移除消息的汇总字符串。summary_llm&#xff1a;生成摘要的 LLM&#xff0c;接收 summary&#xff08;当…

docker单点安装Hadoop

1、Docker中拉取jdk8镜像 拉取镜像 docker pull openjdk:8-jdk 查看jdk docker run -it openjdk:8-jdk bash which java 2、安装ubuntu源 拉取镜像 docker pull ubuntu:22.04 保存 docker save -o ubuntu-22.04.tar.gz ubuntu:22.04 移动到自己想要的目录 mv /roo…

uniapp项目之小兔鲜儿小程序商城(二) 首页的实现:自定义导航栏,轮拨图,前台分类,热门推荐,猜你喜欢,下拉刷新,骨架屏

文章目录 零.首页最终效果一.自定义导航栏1.新建pages/index/components/CustomNavbar.vue首页子组件2.在首页pages/index/index.vue中引入3.隐藏默认导航栏修改标题颜色4.适配不同机型使用到了uniapp的一个api:获取屏幕边界到安全区域的距离在子组件中使用 二.轮拨图1.新建 sr…

RustDesk自建远程服务器

目录 服务端 环境linux 安装 开放端口 客户端配置 下载客户端 安装后配置网络 参考&#xff1a;RustDesk自建远程服务器_rustdesk自建服务器-CSDN博客 服务端 环境 linux 安装 下载 wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.8-2/r…

【Axure高保真原型】图片伸缩展示列表

今天和大家分享图片伸缩展示列表的3个原型案例&#xff0c;模版都是用中继器制作的&#xff0c;所以使用也很方便&#xff0c;在中继器表格里导入对应的图片&#xff0c;即可自动生成交互效果&#xff0c;具体效果可以点击下方视频观看或打开下方预览地址查看哦 【原型效果】 …

keil新建工程文件结构和每个文件的作用解析(标准库版本)

通过网盘分享的文件:STM32工程模板 链接:https://pan.baidu.com/s/1YPFgXu1kwuwsCVxrXFSjZg?pwd=1111 提取码: 1111 --来自百度网盘超级会员v5的分享 这个工程模版是来源于B站江科大的模版,每个人搭建工程文件结构不一样,仅供参考。 工程文件目录结构如图所示 1、DebugC…

【AI论文】Saffron-1:LLM安全保证的推理缩放范例

摘要&#xff1a;现有的安全保证研究主要集中在培训阶段的协调&#xff0c;以向LLM灌输安全行为。 然而&#xff0c;最近的研究表明这些方法容易受到各种越狱攻击。 同时&#xff0c;推理扩展显著提高了LLM推理能力&#xff0c;但在安全保证方面仍未得到探索。 为了解决这一差距…

LLM 支持的基于意图的分类 网络钓鱼电子邮件

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 网络钓鱼攻击仍然是现代网络安全的重大威胁&#xff0c;因为它们成功地欺骗了人类和旨在保护他们的防御机制。传统的检测系统主要关注用户在收件箱中看不到的电子邮件元数据。此外&#xff0c;这些…