C# 编程语言学习教程

C# 编程语言学习教程

在这里插入图片描述

目录

  1. C# 简介
    • 1.1 什么是 C#
    • 1.2 C# 的特点
    • 1.3 C# 的应用领域
  2. 环境搭建
    • 2.1 安装 Visual Studio
    • 2.2 创建第一个 C# 项目
  3. 基础语法
    • 3.1 数据类型
    • 3.2 控制结构
    • 3.3 数组与字符串
  4. 面向对象编程
    • 4.1 类与对象
    • 4.2 继承与多态
    • 4.3 接口与抽象类
  5. 常用库与框架
    • 5.1 .NET Framework 与 .NET Core
    • 5.2 常用类库
  6. 异常处理
    • 6.1 异常的概念
    • 6.2 try-catch 语句
  7. 文件操作
    • 7.1 读写文本文件
    • 7.2 读写二进制文件
  8. 多线程编程
    • 8.1 线程的概念
    • 8.2 使用 Task 进行异步编程
  9. 数据库操作
    • 9.1 ADO.NET 基础
    • 9.2 Entity Framework
  10. 总结与学习资源

1. C# 简介

1.1 什么是 C#

C# 是一种现代的、通用的、面向对象的编程语言,由微软于 2000 年推出。它是 .NET 平台的主要语言之一,广泛应用于 Windows 应用程序、Web 应用程序、游戏开发等领域。

1.2 C# 的特点

  • 简单易学:C# 的语法与 Java 和 C++ 类似,易于上手。
  • 面向对象:支持封装、继承和多态等面向对象特性。
  • 强类型语言:类型安全,编译时检查类型错误。
  • 跨平台支持:通过 .NET Core 可以在多种平台上运行。

在这里插入图片描述

1.3 C# 的应用领域

  • 桌面应用程序:使用 Windows Forms 或 WPF 开发。
  • Web 应用程序:使用 ASP.NET 开发。
  • 游戏开发:使用 Unity 引擎开发游戏。
  • 移动应用:使用 Xamarin 开发跨平台移动应用。

2. 环境搭建

2.1 安装 Visual Studio

  1. 访问 Visual Studio 官网。
  2. 下载并安装 Visual Studio Community 版本。
  3. 在安装过程中选择 “.NET 桌面开发” 工作负载。

在这里插入图片描述

2.2 创建第一个 C# 项目

  1. 打开 Visual Studio,选择“创建新项目”。
  2. 选择“控制台应用程序”,点击“下一步”。
  3. 命名项目并选择保存路径,点击“创建”。

在这里插入图片描述


3. 基础语法

3.1 数据类型

C# 支持多种数据类型,包括:

  • 整数类型int, long, short, byte
  • 浮点类型float, double, decimal
  • 字符类型char
  • 布尔类型bool
  • 字符串类型string
示例:
int age = 25;
double height = 1.75;
char initial = 'A';
bool isStudent = true;
string name = "Alice";

3.2 控制结构

C# 支持常见的控制结构,如条件语句和循环语句。

条件语句示例:
if (age >= 18)
{Console.WriteLine("成年人");
}
else
{Console.WriteLine("未成年人");
}
循环语句示例:
for (int i = 0; i < 5; i++)
{Console.WriteLine(i);
}

3.3 数组与字符串

数组示例:
int[] numbers = { 1, 2, 3, 4, 5 };
Console.WriteLine(numbers[0]); // 输出 1
字符串示例:
string greeting = "Hello, World!";
Console.WriteLine(greeting.Length); // 输出 13

4. 面向对象编程

4.1 类与对象

C# 是面向对象的语言,类是对象的蓝图。

示例:
public class Person
{public string Name { get; set; }public int Age { get; set; }public void Introduce(){Console.WriteLine($"我是 {Name}, {Age} 岁");}
}// 创建对象
Person person = new Person { Name = "Alice", Age = 25 };
person.Introduce(); // 输出:我是 Alice, 25 岁

4.2 继承与多态

C# 支持类的继承和多态。

示例:
public class Animal
{public virtual void Speak(){Console.WriteLine("动物发声");}
}public class Dog : Animal
{public override void Speak(){Console.WriteLine("汪汪");}
}// 使用多态
Animal myDog = new Dog();
myDog.Speak(); // 输出:汪汪

4.3 接口与抽象类

接口定义了一组方法,而抽象类可以包含实现。

接口示例:
public interface IDrawable
{void Draw();
}public class Circle : IDrawable
{public void Draw(){Console.WriteLine("画一个圆");}
}
抽象类示例:
public abstract class Shape
{public abstract void Draw();
}public class Square : Shape
{public override void Draw(){Console.WriteLine("画一个方形");}
}

5. 常用库与框架

5.1 .NET Framework 与 .NET Core

  • .NET Framework:主要用于 Windows 平台的开发。
  • .NET Core:跨平台,支持 Windows、Linux 和 macOS。

5.2 常用类库

  • System.Collections:提供集合类。
  • System.IO:提供文件操作类。
  • System.Net:提供网络操作类。

6. 异常处理

6.1 异常的概念

异常是程序运行中发生的错误,C# 提供了异常处理机制来捕获和处理这些错误。

6.2 try-catch 语句

使用 try-catch 语句来捕获异常。

示例:
try
{int[] numbers = { 1, 2, 3 };Console.WriteLine(numbers[3]); // 引发异常
}
catch (IndexOutOfRangeException ex)
{Console.WriteLine("索引超出范围: " + ex.Message);
}

7. 文件操作

7.1 读写文本文件

使用 StreamReaderStreamWriter 进行文本文件操作。

示例:
// 写入文件
using (StreamWriter writer = new StreamWriter("test.txt"))
{writer.WriteLine("Hello, World!");
}// 读取文件
using (StreamReader reader = new StreamReader("test.txt"))
{string content = reader.ReadToEnd();Console.WriteLine(content);
}

7.2 读写二进制文件

使用 BinaryReaderBinaryWriter 进行二进制文件操作。

示例:
// 写入二进制文件
using (BinaryWriter writer = new BinaryWriter(File.Open("data.bin", FileMode.Create)))
{writer.Write(1);writer.Write(2.5);
}// 读取二进制文件
using (BinaryReader reader = new BinaryReader(File.Open("data.bin", FileMode.Open)))
{int number = reader.ReadInt32();double value = reader.ReadDouble();Console.WriteLine($"{number}, {value}");
}

8. 多线程编程

8.1 线程的概念

多线程允许程序同时执行多个任务,C# 提供了 Thread 类来创建和管理线程。

8.2 使用 Task 进行异步编程

使用 Task 类可以更简单地进行异步编程。

示例:
public async Task<string> FetchDataAsync()
{await Task.Delay(2000); // 模拟异步操作return "数据获取完成";
}public async void Start()
{string result = await FetchDataAsync();Console.WriteLine(result);
}

9. 数据库操作

9.1 ADO.NET 基础

ADO.NET 是用于与数据库交互的主要 API。

示例:
using (SqlConnection connection = new SqlConnection("your_connection_string"))
{connection.Open();SqlCommand command = new SqlCommand("SELECT * FROM Users", connection);SqlDataReader reader = command.ExecuteReader();while (reader.Read()){Console.WriteLine(reader["Name"]);}
}

9.2 Entity Framework

Entity Framework 是一个 ORM 框架,简化了数据库操作。

示例:
using (var context = new YourDbContext())
{var users = context.Users.ToList();foreach (var user in users){Console.WriteLine(user.Name);}
}

10. 总结与学习资源

C# 是一门功能强大的编程语言,适用于多种开发场景。通过本教程,你已经掌握了 C# 的基础语法、面向对象编程、异常处理、文件操作、多线程编程以及数据库操作等重要概念。

学习资源

  • C# 官方文档
  • C# 教程
  • LeetCode 练习

希望这份教程能帮助你更好地学习 C# 编程语言,祝你编程愉快!如有疑问,欢迎在评论区留言。

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

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

相关文章

文件上传知识梳理:原理、工具、绕过、利用与防御

文章简介&#xff1a; 本文全面梳理了文件上传相关知识&#xff0c;包括文件上传漏洞的原理及危害&#xff0c;介绍了 Webshell 相关工具&#xff08;如冰蝎、哥斯拉、蚁剑&#xff09;&#xff0c;详细阐述了文件上传绕过检测的多种方法&#xff08;前端检测、服务端检测的各…

学Linux的第六天

目录 账户和组管理 工作组管理 创建工作组groupadd 修改工作组groupmod 添加/删除组成员gpasswd 删除工作组groupdel 查看用户登录系统的情况 users查看当前登录系统的用户 last命令 lastlog命令 w命令 显示登录到系统的用户信息 who命令 Linux文件系统权限 文件…

KKFileView v4.4.0文件预览服务 编译和window运行和nginx代理设置

目录 一、拉取代码 二、编译打包 三、测试使用 四、实际使用 五、其他问题 本文记录&#xff0c;使用最新v4.4.0版本KKFileView源代码&#xff0c;在本地window上搭建文件预览服务&#xff0c;并通过nginx反向代理实现https访问。 一、拉取代码 从官网github上下载源代码…

树莓派基础设置--1.更新和升级操作系统

注意&#xff1a;使树莓派保持最新状态可以提高系统的安全性&#xff0c;但对于开发人员并不建议随意更新&#xff01; 一、图像化界面 一般桌面的右上角也会显示树莓派系统更新的提示&#xff0c;可以点击相应选项进行更新&#xff01; 二、使用APT 用来管理软件安装、升级…

用Pyhon写一款简单的益智类小游戏——2048

文字版——代码及讲解 代码—— import random# 初始化游戏棋盘 def init_board():return [[0] * 4 for _ in range(4)]# 在棋盘上随机生成一个2或4 def add_new_tile(board):empty_cells [(i, j) for i in range(4) for j in range(4) if board[i][j] 0]if empty_cells:i,…

STL---unordered_set与unordered_map与前言(哈希表)

文章目录 哈希哈希容器&#xff1a;unordered_set与unordered_map哈希哈希表哈希函数哈希冲突解决哈希冲突扩容 哈希表的代码实现线性探测法解决哈希冲突哈希桶解决哈希冲突 哈希 哈希容器&#xff1a;unordered_set与unordered_map unordered_set 定义如下: 常用接口 跟桶…

深度学习(八) TensorFlow、PyTorch、Keras框架大比拼(8/10)

一、深度学习框架概述 深度学习框架在当今人工智能和机器学习领域中占据着至关重要的地位。其中&#xff0c;TensorFlow 由 Google 开发&#xff0c;自 2015 年发布以来&#xff0c;凭借其灵活的计算图、自动微分功能以及跨平台支持等特点&#xff0c;迅速成为主流深度学习框架…

盘点Windows10系统之下好用的录屏工具!

在当前时代&#xff0c;互联网媒体的普及。图片视频等随处可见&#xff0c;越来越多的工作、学习、培训等都以转变成视频形式。我的工作就是离不开利用视频来进行交流。也因如此&#xff0c;很多时候因为直播中需要进行回顾等录屏需求&#xff0c;使用过多款录屏软件。拥有一款…

【MySQL】实战篇—项目需求分析:ER图的绘制与关系模型设计

在软件开发中&#xff0c;数据库是信息系统的核心部分&#xff0c;合理的数据库设计能够显著提高系统的性能和可维护性。 ER图&#xff08;实体-关系图&#xff09;是数据库设计的重要工具&#xff0c;它通过图形化的方式描述了数据实体及其相互关系&#xff0c;帮助开发者和设…

短信验证码发送实现(详细教程)

短信验证码 接口防刷强检验以及缓存验证码阿里云短信服务操作步骤验证码发送实现 好久没发文啦&#xff01;最近也是在工作中遇到我自认为需要记录笔记的需求&#xff0c;本人只求日后回顾有迹可寻&#xff0c;不喜勿喷&#xff01; 废话不多说&#xff0c;直接上代码&#xff…

深度学习数学基础之梯度

深度学习数学基础之梯度 方向余弦 方向导数 梯度&#xff08;向量&#xff09; 变化率最大的方向或者说方向导数最大的方向就是梯度向量的方向指向方向导数变化最大的方向

PYNQ 框架 - VDMA驱动 - 帧缓存

目录 1. 简介 2. 代码分析 2.1 _FrameCache 类定义 2.1.1 xlnk.cma_array() 2.1.2 pointerNone 2.1.3 PynqBuffer 2.2 _FrameCache 例化与调用 2.3 _FrameCache 测试 2.4 _FrameList 类定义 2.5 _FrameList 例化与调用 2.6 _FrameList 测试 3. 帧的使用 3.1 读取帧…

Cloud Compare学习笔记

1.1 导出文件 导出点云数据为 PCD 格式时&#xff0c;系统提供了三种保存选项&#xff0c;分别是 Compressed Binary&#xff08;压缩二进制&#xff09;、Binary&#xff08;二进制&#xff09;、ASCII/Text&#xff08;文本&#xff09; Compressed Binary&#xff08;压缩…

电商直播带货乱象频出,食品经销商如何规避高额损失?

近年来&#xff0c;电商直播带货乱象频出&#xff0c;食品经销行业售卖商品涉嫌违规的事件层出不穷。以食品安全为例&#xff0c;2024年10月17日市场监管总局发布了关于11批次食品抽检不合格情况的通告&#xff0c;在抽检的650批次样品中&#xff0c;发现存在食品添加剂超范围超…

攻防世界 MISC miao~详解

下载压缩包&#xff0c;但是尝试解压的时候提示错误&#xff0c;刚开始以为是伪加密之类的&#xff0c;但是尝试了一圈之后&#xff0c;发现并没有问题。后面用bandizip打开&#xff0c;得到了一张图片&#xff1a; 拖到010editor里面查看&#xff0c;没有发现什么 于是用随波逐…

基于Unet卷积神经网络的脑肿瘤MRI分割

项目源码获取方式见文章末尾&#xff01; 回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【YOLO模型实现农作物病虫害虫识别带GUI界面】 2.【卫星图像道路检测DeepLabV3P…

记一次:使用使用Dbeaver连接Clickhouse

前言&#xff1a;使用了navicat连接了clickhouse我感觉不太好用&#xff0c;就整理了一下dbeaver连接 0、使用Navicat连接clickhouse 测试连接 但是不能双击打开&#xff0c;可是使用命令页界面&#xff0c;右键命令页界面&#xff0c;然后可以用sql去测试 但是不太好用&#…

python nan是什么

NaN&#xff08;not a number&#xff09;&#xff0c;在数学表示上表示一个无法表示的数&#xff0c;这里一般还会有另一个表述inf&#xff0c;inf和nan的不同在于&#xff0c;inf是一个超过浮点表示范围的浮点数&#xff08;其本质仍然是一个数&#xff0c;只是他无穷大&…

ABAP开发学习——内存管理二

SAP内存与ABAP内存的不同 SAP内存 当在某个事务程序中输入了物料号等&#xff0c;在打开其他需要输入物料号的事务窗口中会自动带出&#xff0c;不需要自己输入&#xff0c;因为这些地方使用相同的parameter id&#xff0c;共享相同SAP内存区域 在数据库表TPARA中可以查看到 S…

如何在短时间内入门并掌握深度学习?

如何在短时间内快速入门并掌握深度学习&#xff0c;是很多读者的困惑——晦涩难懂的数学 知识、复杂的算法、烦琐的编程……深度学习虽然让无数读者心怀向往&#xff0c;却也让不少人望而生畏&#xff0c;深感沮丧&#xff1a;时间没少花&#xff0c;却收效甚微。 如何才能更好…