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# 编程语言,祝你编程愉快!如有疑问,欢迎在评论区留言。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PAT甲级-1092 To Buy or Not to Buy

题目 题目大意 Eva想要买珠子&#xff0c;但是只能按串买。如果串上有她想要买的所有珠子&#xff0c;那么输出“Yes”&#xff0c;再输出需要额外买几个珠子。如果串上缺少她想要的珠子&#xff0c;那么输出“No”&#xff0c;并输出缺少的珠子个数。其中&#xff0c;s1是商店…

使用WebAssembly优化Web应用性能

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用WebAssembly优化Web应用性能 引言 WebAssembly 简介 编译 WebAssembly 模块 使用 Emscripten 编译 C/C 代码 使用 Rust 编译…

【C语言】自定义类型(结构体、枚举、联合的详解)下

写在前面 书接上回&#xff1a;【C语言】自定义类型&#xff08;结构体、枚举、联合的详解&#xff09;上 在上中&#xff0c;不才独篇撰写了结构体的具体细节&#xff0c;本篇笔记主要是把剩下的自定义类型全部展示。 文章目录 写在前面二、位段2.1、位段的定义2.2、位段占用…

初始JavaEE篇 —— 文件操作与IO

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaEE 目录 文件介绍 Java标准库中提供操作文件的类 文件系统操作 File类的介绍 File类的使用 文件内容操作 二进制文件的读写操作…

CSP 2024 入门级第二轮 CSP-J 2024 复赛 第一题 扑克牌

一、题目阅读 [CSP-J 2024] 扑克牌 - 洛谷 二、题目解析 输入 去重 三、题目代码 #include <bits/stdc.h> using namespace std;int main() {map<string, bool> flag;int n, res 52;cin >> n;while (n--) {string s;cin >> s;if (!flag[s]) { // …

面试题:JVM(二)

1. 面试题 简述 Java 类加载机制?&#xff08;百度&#xff09; JVM类加载机制 &#xff08;滴滴&#xff09; JVM中类加载机制&#xff0c;类加载过程&#xff0c;什么是双亲委派模型&#xff1f; &#xff08;腾讯&#xff09; JVM的类加载机制是什么&#xff1f; &#x…

AUTOSAR CP MCAL微控制器抽象层介绍

AUTOSAR(Automotive Open System Architecture)即汽车开放系统架构,它将汽车电子控制单元(ECU)的软件底层做了一个标准的封装,使得开发者能够共用一套底层软件,并通过修改参数来匹配不同的硬件和应用层软件。AUTOSAR CP(Classic Platform)是AUTOSAR架构中的一个重要组…

ElastricSearch 原理以及简单实用(超级通俗)

提到非结构化数据的检索&#xff0c;常常用到 ElasticSearch&#xff0c;他是什么呢&#xff1f; ElasticSearch 是一个基于 Apache Lucene 的分布式搜索引擎&#xff0c;可以作为实时文档存储系统&#xff0c;且文档的每一个内容都可以被检索&#xff0c;能够处理 PB 级别的结…

在线培训知识库:企业培训的新篇章

在当今快节奏的商业环境中&#xff0c;员工培训已成为企业保持竞争力的关键。在线培训知识库作为一种新兴的培训工具&#xff0c;正逐渐成为企业培训体系的核心。它不仅能够提供灵活的学习方式&#xff0c;还能确保培训内容的及时更新和高效传播。本文将探讨在线培训知识库的重…

简单的kafkaredis学习之kafka

简单的kafka&redis学习整理之kafka 1. kafka 1.1 什么是消息队列 在学习Kafka之前我们先来看一下什么是消息队列&#xff0c;消息队列(Message Queue)&#xff1a;可以简称为MQ 例如&#xff1a;Java中的Queue队列&#xff0c;也可以认为是一个消息队列 消息队列&#x…

【连续多届检索,ACM出版】第四届大数据、人工智能与风险管理国际学术会议 (ICBAR 2024,11月15-17)--冬季主会场

第四届大数据、人工智能与风险管理国际学术会议 (ICBAR 2024)--冬季主会场 2024 4th International Conference on Big Data, Artificial Intelligence and Risk Management 会议官网&#xff1a;www.icbar.net 2024 4th International Conference on Big Data, Artificial I…

集成框架 -- 自定义二方包 starter

自定义starter 二方包 My-thread-pool-startermy-thread-pool-starter 整体架构 测试 MyTestAppApplication测试工程 my-test-app 结构测试项目的 pom.xml 二方包 My-thread-pool-starter POM 文件 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi&…

如何看待AI技术的应用前景?

文章目录 如何看待AI技术的应用前景引言AI技术的现状1. AI的定义与分类2. 当前AI技术的应用领域 AI技术的应用前景1. 经济效益2. 社会影响3. 技术进步 AI技术应用面临的挑战1. 数据隐私与安全2. 可解释性与信任3. 技能短缺与就业影响 AI技术的未来发展方向1. 人工智能的伦理与法…

华为擎云(银河麒麟V10+麒麟9000C CPU)电脑总是弹出“选择新密钥环的密码”(20241030)

症状如下图&#xff1a; 网络上一般的解决方法都是安装 seahorse &#xff0c;例如这篇文章:银河麒麟系统清除桌面密钥环 不知道为什么&#xff0c;这对我的这台电脑并不可行。 麒麟系统用的是 Gnome 桌面。这个“密钥环”的弹出框是由 gnome-keyring-daemon 弹出的。这是一个…

[SICTF Round4] PWN

这PWN题似乎是给我出的&#xff0c;4个一血1个2血。密码又过于简单。逆向太难了又不大会。 Stack fengshui main可以溢出覆盖rbpret所以它每一步都需要移栈。 可用的ROP里没有pop rdi,在4004c0里有错位的01 5d c3 &#xff1a;add DWORD PTR [rbp-0x3d], ebx 并且有对应的p…

yaml文件编写

Kubernetes 支持YAML和JSON格式管理资源 JSON 格式:主要用于 api 接口之间消息的传递 YAML 格式;用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化容易读懂 一&#xff0c;yaml语法格式 1.1 基本语法规则 使用空格进行缩进&#xff08;不使用制表符&#xff0…

2025浙江省考报名流程详细教程

2025年浙江省考报名马上就要开始了&#xff0c;有想要参加浙江省考的同学&#xff0c;可以提前看一下报名流程&#xff0c;和报名照要求。 报名时间&#xff1a;11月6日9时一11月11日17时 南核时间&#xff1a;11月6日9时一11月13日17时 缴费时间&#xff1a;11月14日9时一11月…

江协科技STM32学习- P30 FlyMCU串口下载STLink Utility

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

HarmonyOS鸿蒙开发入门,常用ArkUI组件学习(一)

刚开始接触HarmonyOS的开发&#xff0c;希望不会太晚。在我学习的过程中&#xff0c;我会将我学到的内容&#xff0c;通过写博客的形式&#xff0c;来进行回忆和复习。同时也希望能够遇到志同道合的朋友&#xff0c;我们一起学习&#xff0c;一起进步&#xff0c;文章中有什么不…

shell脚本案例:创建用户和组

使用场景 在部署程序时&#xff0c;往往首要任务是创建用户和组。有的程序可能用到的组、用户比较多&#xff1b;且不知道服务器环境是否已经有了所需的组和用户。所以针对这个情况&#xff0c;根据Oracle RAC部署时的实际情况写了个脚本。 Linux版本 脚本代码 #!/bin/bash …