C# 编程语言学习教程

news2024/11/25 10:28:22

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.coloradmin.cn/o/2228678.html

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

相关文章

分类预测 | GCN图卷积神经网络多特征分类预测(MATLAB)

分类预测 | GCN图卷积神经网络多特征分类预测(MATLAB) 目录 分类预测 | GCN图卷积神经网络多特征分类预测(MATLAB)分类效果基本介绍程序设计参考资料分类效果 基本介绍 GCN图卷积神经网络多特征分类预测(MATLAB) 在图卷积神经网络(GCN)中,多特征分类

以AI赋能身份验证,Jumio助力中国企业出海

近年来&#xff0c;越来越多的中国企业开始扬帆出海积极拓展全球市场。而能够为企业出海提供各种助力的技术与解决方案&#xff0c;也成为了众多企业关注的焦点。 作为全球领先的在线身份验证和欺诈预防解决方案提供商&#xff0c;Jumio于近日在北京举办了中国媒体见面会&#…

中级 <HarmonyOS第一课>合理使用动画和转场的课后习题

天道无亲&#xff0c;常与善人。 天命人&#xff0c;战斗吧&#xff01;&#xff01;&#xff01; 来自 <HarmonyOS第一课>合理使用动画和转场的习题。 判断题 animateTo可以设置组件进行位移动画时的运动路径。❌ 单选题 模态转场不包括以下哪个类别&#xff1f; A. …

Python(包和模块)

包 定义 包是将模块以文件夹的组织形式进行分组管理的方法&#xff0c;以便更好地组织和管理相关模块。 包是一个包含一个特殊的__init__.py文件的目录&#xff0c;这个文件可以为空&#xff0c;但必须存在&#xff0c;以标识目录为Python包。 包可以包含子包&#xff08;子…

数据采集-Kepware OPCUA 服务器实现

KepserverEX OPC UA server设置 目录 KepserverEX OPC UA server设置一、OPC UA(OPC Unified Architecture)二、防火墙的配置三、配置KepserverEX的OPC UA3.1 启用远程连接3.2 启动OPCUA服务器接口 四、管理OPCUA的端口和证书4.1 添加端口4.2 证书申请 一、OPC UA(OPC Unified …

医学和生信web APP 平台- Appmatrix

医学&#xff08;和生信&#xff09;web APP 平台- Appmatrix 最近使用shinyproxy将平时所构建的shiny和streamlit医学类应用汇集在一起&#xff0c;实现一站式访问&#xff0c;另外&#xff0c;使用了自己电脑内网穿透&#xff0c;一定程度上缓解了数据分析类APP消耗计算资源…

PyTorch nn.Conv2d 空洞卷积

torch.nn.Conv2d() 中 dilation 参数控制卷积核的间隔 dilation controls the spacing between the kernel points 当 dilation1 时, 表示卷积核没有额外的空白间距, 也就是标准卷积当 dilation>1 时, 表示空洞卷积(dilated convolution) 动画演示: 手动计算 以 2*2 的卷…

大模型,多模态大模型面试问题【计算图,LLama,交叉熵,SiLU,RLHF】

大模型&#xff0c;多模态大模型面试问题【计算图&#xff0c;LLama&#xff0c;交叉熵&#xff0c;SiLU&#xff0c;RLHF】 问题一&#xff1a;讲一讲计算图中pytorch是什么&#xff0c;TensorFlow是什么&#xff1f;1. PyTorch2. TensorFlow区别总结 问题二&#xff1a;Llama…

learnopencv系列一:使用神经网络进行特征匹配(LoFTR、XFeat、OmniGlue)、视频稳定化、构建Chrome Dino游戏机器人

文章目录 一、使用神经网络进行特征匹配1.1 什么是图像特征&#xff1f;1.2 特征匹配的应用场景——为什么在2024年还要进行特征匹配&#xff1f;1.3 特征匹配——经典方法与深度学习1.3.1 经典特征匹配1.3.2 深度学习特征匹配1.3.3 XFeat1.3.3.1 网络结构1.3.3.2 局部特征提取…

MySQL 数据出海之数据同步方案

优质博文&#xff1a;IT-BLOG-CN 数据库出海流程 【1】业务出海&#xff1a;1&#xff09;数据库出海&#xff1b;2&#xff09;应用出海&#xff1b;3&#xff09;流量分发&#xff1b; 【2】数据库出海&#xff1a;涉及业务方、信安、DBA和框架组。 数据库出海&#xff0c…

Elasticsearch 安装教程:驾驭数据海洋的星际导航仪

目录 一、准备工作1. ES的下载 二、安装步骤三、注意事项四、启动报错1. org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root2. max virtual memory areas vm.max_map_count [65530] is too low, increase to at l…

RK3568平台开发系列讲解(I2C篇)I2C 上拉电阻

🚀返回专栏总目录 文章目录 一、接上拉电阻的作用二、I2C 上拉电阻阻值计算沉淀、分享、成长,让自己和他人都能有所收获!😄 I2C 的硬件连接如下图所示: 可以看到在 SDA 数据线和 SCL 时钟线上都需要接一个上拉电阻? 一、接上拉电阻的作用 SDA 数据线和 SCL 时钟线上接…

使用AIM对SAP PO核心指标的自动化巡检监控

一、背景 由于SAP PO系统维护成本较高&#xff0c;各类型异常报错等都需要人员进行时刻监控和响应&#xff0c;遂由AIM平台进行自动化巡检SAP PO的各指标&#xff0c;然后告警通知用户&#xff0c;节省维护成本和提高工作效率 二、核心指标监控 SAP PO失败消息 适用于S…

Golang | Leetcode Golang题解之第521题最长特殊序列I

题目&#xff1a; 题解&#xff1a; func findLUSlength(a, b string) int {if a ! b {return max(len(a), len(b))}return -1 }func max(a, b int) int {if b > a {return b}return a }

C语言:动态内存管理【上】

一. malloc C语言提供了一个动态内存开辟的函数&#xff1a; 1 void* malloc (size_t size);这个函数向内存申请一块连续可用的空间&#xff0c;并返回指向这块空间的指针。 &#xff0e;如果开辟成功&#xff0c;则返回一个指向开辟好空间的指针。 &#xff0e;如果开辟失败…

10.24.2024刷华为OD C题型(四) -- 对象list按照多个属性排序

文章目录 最长连续子序列AI面板识别语法知识记录 最长连续子序列 https://www.nowcoder.com/discuss/592408743019589632 if __name__ "__main__":# 获取用户输入# numbers int(input().split(,))# str_arr input().split(,)arr [int(num) for num in input(…

ubuntu 24 (wayland)如何实现无显示器远程桌面

ubuntu 24默认采用的是wayland而非x11&#xff0c;查过文档vnc对wayland的支持不是很好&#xff0c;折腾了好久&#xff0c;弄了一个如下的方案供参考&#xff1a; 硬件条件 需要一个显卡欺骗器或者可以接HDMI口作为视频信号源输出的设备。 将ubuntu的主机的HDMI输出接到该硬…

MATLAB FDATool工具箱入门教程

在数字信号处理领域&#xff0c;滤波器设计是一项基础且关键的任务。MATLAB提供了一个强大的工具——FDATool&#xff08;Filter Design and Analysis Tool&#xff09;&#xff0c;它可以帮助用户轻松设计和分析各种数字滤波器。 本文将带领大家深入了解FDATool&#xff0c;让…

JUC并发编程面试题总结

文章目录 1、创建线程的三种方式2、线程的状态3、线程的上下文切换4、run和start的区别5、sleep和wait区别6、虚假唤醒&#xff0c;精确唤醒7、两阶段终止模式8、多线程下的线程安全问题9、如何解决线程安全问题10、synchornized的原理11、锁升级的机制12、锁消除13、批量重偏向…

<HarmonyOS第一课>给应用添加通知和提醒的习题

无形无名者&#xff0c;万物之宗也。 虽今古不同&#xff0c;时移俗易&#xff0c;故莫不由乎此&#xff0c;以成其治者也。 故可执古之道&#xff0c;以御今之有。 上古虽远&#xff0c;其道存焉&#xff0c;故虽在今&#xff0c;可以知古始也。 天命人, 刷无聊剧本… 本文来…