👏🏻 你好!欢迎访问IT教程网,0门教程,教程全部原创,计算机教程大全,全免费!

🔥 新增教程

《黑神话 悟空》游戏开发教程,共40节,完全免费,点击学习

《AI副业教程》,完全原创教程,点击学习

25 集合和数组之数组的使用

在上一篇文章中,我们探讨了自定义异常处理的方式,了解了如何创建自定义异常类以及在代码中进行异常捕获与处理。这篇文章将带你进入集合和数组的世界,重点讨论如何使用数组的数组。

数组的数组简介

在 C# 中,数组是用于存储固定大小的同一类型元素的集合。而“数组的数组”更准确地说是指多维数组不规则数组,即数组的元素又是数组。

定义数组的数组

在 C# 中,可以通过以下方式定义数组的数组:

  1. 多维数组:使用逗号分隔每一维的大小。
  2. 不规则数组(Jagged Array):数组的元素是另一个数组,各个子数组可以有不同的长度。

下面我们分别来看看这两种类型。

1. 多维数组

多维数组是一个矩阵类型的数组,其元素的类型相同且维度相同。我们可以通过使用逗号来定义多维数组。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 定义一个二维数组,表示3行2列的整数
int[,] multiArray = new int[3, 2];

// 为数组赋值
multiArray[0, 0] = 1;
multiArray[0, 1] = 2;
multiArray[1, 0] = 3;
multiArray[1, 1] = 4;
multiArray[2, 0] = 5;
multiArray[2, 1] = 6;

// 遍历 multiArray
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 2; j++)
{
Console.Write(multiArray[i, j] + " ");
}
Console.WriteLine();
}

以上代码创建了一个 3x2 的二维数组,然后将一些整数赋值给它。最后通过两层循环遍历数组并打印出来。

2. 不规则数组 (Jagged Array)

不规则数组的每个元素都是一个数组,且这些子数组可以有不同的长度,这使得我们在处理某些问题时更加灵活。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 定义一个不规则数组,包含3个子数组
int[][] jaggedArray = new int[3][];

// 为每个子数组分配长度
jaggedArray[0] = new int[2]; // 第一个子数组包含2个元素
jaggedArray[1] = new int[3]; // 第二个子数组包含3个元素
jaggedArray[2] = new int[1]; // 第三个子数组包含1个元素

// 为不规则数组赋值
jaggedArray[0][0] = 1;
jaggedArray[0][1] = 2;
jaggedArray[1][0] = 3;
jaggedArray[1][1] = 4;
jaggedArray[1][2] = 5;
jaggedArray[2][0] = 6;

// 遍历 jaggedArray
for (int i = 0; i < jaggedArray.Length; i++)
{
for (int j = 0; j < jaggedArray[i].Length; j++)
{
Console.Write(jaggedArray[i][j] + " ");
}
Console.WriteLine();
}

在上面的代码中,我们定义并初始化了一个不规则数组 jaggedArray,它包含三个子数组。每个子数组的长度各不相同,通过双层循环遍历并打印出每个元素。

小结

在本篇文章中,我们介绍了数组的数组,包括了多维数组不规则数组的定义和使用案例。理解和掌握这些基础知识为后续的集合与数组的深入学习奠定了基础。接下来,我们将继续讨论集合和数组中的集合简介,探讨更灵活的集合操作及其优缺点。

希望通过本篇内容的学习,能够加深你对 C# 中数组及其扩展形式的理解!如有疑问,欢迎随时讨论。

分享转发

26 集合和数组之集合简介

在前一篇文章中,我们讨论了 C# 中数组的使用,包括数组的创建、初始化、遍历等操作。在这一篇中,我们将聚焦于 C# 中的集合(Collections)。集合与数组相比,提供了更灵活的数据管理方式。下面,我们将介绍集合的基本概念以及常见的集合类型。

集合的概念

在 C# 中,集合是一个可以存储多个元素的数据结构,集合里的元素可以是不同的类型。集合提供了更多的操作方法,如添加、删除和查找元素等,较之数组,集合的大小更具动态性。

集合大致可以分为两类:

  1. 非泛型集合:这些集合不使用泛型,可以存储任何类型的对象。
  2. 泛型集合:这些集合采用泛型,能够高效地存储特定类型的对象,编译时便可检查类型,降低运行时错误的概率。

集合的基本类型

C# 中有多种集合类型,以下是一些比较常用的集合:

1. ArrayList

ArrayList 是一种非泛型集合,它可以存放任何对象类型,且数组的大小是可变的。虽然使用方便,但容易引入类型不一致的问题。

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Collections;

class Program
{
static void Main()
{
ArrayList arrayList = new ArrayList();

// 向 ArrayList 中添加元素
arrayList.Add(1);
arrayList.Add("Hello");
arrayList.Add(3.14);

// 遍历 ArrayList
foreach (var item in arrayList)
{
Console.WriteLine(item);
}
}
}

2. List<T>

List<T> 是一种泛型集合,能确保存储的都是同种类型的对象。使用 List<T> 可以避免类型转换问题,提高类型安全性。

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Collections.Generic;

class Program
{
static void Main()
{
List<int> numbers = new List<int>();

// 向 List 中添加元素
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);

// 遍历 List
foreach (int number in numbers)
{
Console.WriteLine(number);
}
}
}

3. Dictionary<TKey, TValue>

Dictionary<TKey, TValue> 是一种键值对集合,可以通过键快速访问值。由于它使用哈希表,因此查找速度非常快。

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections.Generic;

class Program
{
static void Main()
{
Dictionary<string, int> ageDictionary = new Dictionary<string, int>();

// 向 Dictionary 中添加元素
ageDictionary.Add("Alice", 30);
ageDictionary.Add("Bob", 25);

// 遍历 Dictionary
foreach (var kvp in ageDictionary)
{
Console.WriteLine($"{kvp.Key} 的年龄是 {kvp.Value}");
}
}
}

总结

本篇文章简要介绍了 C# 集合的基本概念和几种常见的集合类型,包括 ArrayListList<T>Dictionary<TKey, TValue>。对比于数组,集合更为灵活且功能强大,使得数据管理变得更为简便。对于小白来说,理解并掌握集合的基本使用,是进一步学习 C# 语言的重要基础。

在下一篇文章中,我们将深入讨论 List<T> 的使用方法,包括增加、删除、查找等操作,敬请期待!

分享转发

27 集合和数组之List的使用

在上一篇中,我们对C#中的集合和数组进行了简单的介绍,提到这些数据结构的基本概念和不同之处。今天,我们将深入探讨C#中List<T>的使用,作为一个强大的集合类型,它提供了动态数组的功能,使得我们能够轻松地管理数据。

什么是List

List<T>是属于System.Collections.Generic命名空间的一种集合类型。它能够存储一个指定类型的对象集合,具有如下特性:

  • 动态大小:与数组不同,List<T>可以根据需要自动调整其大小。
  • 类型安全:由于List<T>是泛型集合,它提供了对指定类型对象的安全存储,避免了类型转换错误。

基本使用

要使用List<T>,首先需要引用其命名空间:

1
using System.Collections.Generic;

然后,可以创建一个List<T>实例,例如,我们创建一个存储int类型的List

1
List<int> numbers = new List<int>();

添加元素

我们可以使用Add方法向List中添加元素:

1
2
3
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);

此时,numbers列表的内容为 [1, 2, 3]

访问元素

访问List中的元素可以使用索引,索引从0开始:

1
2
int firstNumber = numbers[0]; // 访问第一个元素
Console.WriteLine(firstNumber); // 输出 1

遍历List

可以使用foreach循环来遍历List中的所有元素:

1
2
3
4
foreach (int number in numbers)
{
Console.WriteLine(number);
}

常用操作

插入元素

使用Insert方法可以在指定位置插入元素:

1
numbers.Insert(1, 4); // 在索引1的位置插入元素4

numbers的内容现在变为 [1, 4, 2, 3]

删除元素

可以使用Remove方法删除指定值的第一个匹配项,或使用RemoveAt方法根据索引删除元素:

1
2
numbers.Remove(2); // 删除值为2的元素
numbers.RemoveAt(0); // 删除索引0的元素

执行以上操作后,numbers的内容为 [4, 3]

查找元素

使用Contains方法可以检查List中是否包含某个值:

1
bool hasFour = numbers.Contains(4); // 返回true

示例:简单的学生成绩管理

接下来,我们来一个简单的案例,使用List来管理学生成绩。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Collections.Generic;

class Program
{
static void Main()
{
List<double> grades = new List<double>();

// 添加成绩
grades.Add(88.5);
grades.Add(92.3);
grades.Add(75.0);
grades.Add(83.2);

// 计算平均分
double average = 0;
foreach (double grade in grades)
{
average += grade;
}
average /= grades.Count;

Console.WriteLine($"学生的平均成绩是: {average}");
}
}

在这个示例中,我们创建一个List<double>来存储学生的成绩,并计算出其平均值。运行此代码将输出学生的平均成绩。

注意事项

  1. 泛型约束:使用List<T>时,确保你熟悉使用的类型;某些操作(如排序)会受到类型限制。
  2. 性能List<T>的动态扩展可能会导致性能开销,尤其在批量插入时,可以考虑预先定义容量。

小结

今天我们学习了C#中的List<T>的基本用法,包括如何添加、访问、删除和遍历元素。List<T>是非常实用的集合类型,尤其适合需要动态大小和易于操作的场景。

在下一篇文章中,我们将进行简单的C#项目之项目需求分析,希望大家继续关注,进一步提升自己的C#编程能力!

分享转发

28 项目需求分析

在上一篇中,我们介绍了 C# 中的集合和数组,特别是 List 的使用。今天,我们将继续这个系列,进行一个简单的 C# 项目之前期准备——项目需求分析。这个阶段非常重要,它帮助我们明确项目目标、功能需求以及实施路线。

什么是项目需求分析?

项目需求分析是指在开发软件之前,首先要对软件的功能、特性进行详细的讨论和分析,以确保开发团队、客户及其他相关人员在项目目标和实现方法上保持一致。

需求分析通常包括以下几个方面:

  1. 功能需求:软件应实现的具体功能。
  2. 非功能需求:如性能、可用性、安全性等。
  3. 技术需求:技术栈、开发工具、环境等。
  4. 用户需求:目标用户,用户对软件的期望等。

案例:计算器项目需求分析

为了更好地理解项目需求分析,我们以一个简单的 计算器 项目为例。

1. 功能需求

在该计算器项目中,我们需要实现以下基本功能:

  • 加法:能够进行两个数字的加法运算。
  • 减法:能够进行两个数字的减法运算。
  • 乘法:能够进行两个数字的乘法运算。
  • 除法:能够进行两个数字的除法运算,需处理除数为零的情况。
  • 历史记录:可以查看计算历史记录。

2. 非功能需求

  • 响应时间:用户每次输入后,计算结果应在2秒内返回。
  • 用户界面:控制台输入输出界面应简洁明了。
  • 错误处理:能够友好提示用户输入错误的情况,例如输入非数字字符。

3. 技术需求

  • 语言:C#(.NET 6或更新版本)。
  • 开发环境:使用 Visual Studio 或 Visual Studio Code。
  • 数据存储:使用 List<string> 存储历史记录。

4. 用户需求

  • 目标用户为初学者和日常使用者,希望能够快速进行简单的算术运算。
  • 用户希望计算器支持基本的四则运算,并能查看历史计算。

需求分析总结

通过本章节的分析,我们已经清晰地了解了我们即将进行的计算器项目的需求。在接下来的章节中,我们将根据这些需求开始开发一个简单的控制台应用程序。

在下一篇中,我们将带着这些需求深入探讨如何用 C# 实现这个计算器。继续使用 List 来存储历史记录,并通过控制台实现用户交互。

记住,良好的需求分析是成功项目的基石,它将指导我们在开发过程中的每一步,让我们不断回归项目初衷,保证最终交付的产品符合预期。

如果您已经准备好启动您的 C# 项目,接下来让我们一起编写代码,构建这个计算器吧!

分享转发

29 简单的C#项目之简单的控制台应用

在上篇教程中,我们进行了简单的C#项目之项目需求分析,明确了项目的目标和功能需求。在本篇中,我们将着手创建一个简单的控制台应用程序。在这款应用中,我们将实现一个基本的用户输入和输出功能,以便于理解C#语言的基本语法和应用。

1. 环境准备

在开始编写代码前,请确保您已安装以下软件:

  • Visual Studio (推荐使用Community版本)
  • .NET SDK

您可以访问 Visual Studio官网 下载并安装所需软件。

2. 创建项目

  1. 打开 Visual Studio,在主界面选择“创建新项目”。
  2. 在项目类型中选择“控制台应用程序”,然后点击“下一步”。
  3. 设置项目名称(如:SimpleConsoleApp)和位置,并点击“创建”。
  4. 选择目标框架(通常可以选择 .NET 6.NET 7),然后点击“创建”。

3. 编写代码

下面我们将编写一个简单的控制台应用程序,该程序将提示用户输入他们的姓名,并返回一个欢迎消息。

3.1 基本代码

在项目创建后,Visual Studio 会自动生成一段代码。我们将在 Program.cs 文件中对其进行修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;

class Program
{
static void Main(string[] args)
{
// 提示用户输入姓名
Console.WriteLine("请输入您的姓名:");

// 读取用户输入
string name = Console.ReadLine();

// 打印欢迎消息
Console.WriteLine($"欢迎 {name} 使用 C# 控制台应用程序!");
}
}

3.2 代码解释

  • using System;:使用 C# 的系统命名空间,提供基本的输入和输出功能。
  • class Program:定义一个名为 Program 的C#类,程序的入口点在此类中。
  • static void Main(string[] args):这是程序的主方法,所有C#程序都需要一个主方法作为入口。
  • Console.WriteLine(...):用于在控制台上输出信息。
  • Console.ReadLine():读取用户输入的文本。

4. 运行程序

在 Visual Studio 中,您可以通过点击菜单栏的“调试” -> “开始调试”或者按 F5 键来运行程序。程序控制台窗口将打开并提示输入姓名。

1
请输入您的姓名:

当您输入姓名后,按下 Enter 键,程序将输出:

1
欢迎 John 使用 C# 控制台应用程序!

5. 扩展功能(可选)

您可以根据需求对这个控制台应用程序进行简单扩展,例如添加输入验证、设置默认值等。以下是一个简单的示例,验证用户是否输入了空值:

1
2
3
4
5
6
7
8
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("您没有输入任何姓名,请重试。");
}
else
{
Console.WriteLine($"欢迎 {name} 使用 C# 控制台应用程序!");
}

6. 总结

在本篇教程中,我们创建了一个简单的C#控制台应用程序,通过用户输入进行输出。这是熟悉C#语言基本特性的第一步,您已经学习了如何在控制台应用程序中读取和显示数据。

在下一篇教程中,我们将学习如何将我们的项目代码托管到GitHub,让您的代码更方便地进行版本管理和团队协作。

如有疑问,欢迎在下方留言。祝您编程愉快!

分享转发

30 简单的C#项目之代码托管

在上一篇中,我们学习了如何创建一个简单的 C# 控制台应用程序。在本篇中,我们将探讨如何将这个项目托管到 GitHub,一个非常流行的代码托管平台。掌握如何使用 GitHub 将有助于我们管理代码版本、进行团队协作,以及分享我们的项目。

1. 前期资料准备

在开始之前,请确保你已经完成以下步骤:

  1. 安装 Git:如果你的计算机上尚未安装 Git,请前往 Git 官网 下载并安装最新版本的 Git
  2. 创建 GitHub 账户:如果还没有 GitHub 账户,请前往 GitHub 官网 注册一个账户。

2. 创建 GitHub 仓库

  1. 登录你的 GitHub 账户,然后点击右上角的 + 按钮,选择 New repository
  2. 在“创建一个新的仓库”页面:
    • Repository name:填写你的项目名称,比如 MyFirstCSharpApp
    • Description:可选,填写项目描述,例如“这是我的第一个 C# 控制台应用”。
    • Public/Private:选择你的仓库是公开还是私有。初学者可以选 Public
    • 点击 Create repository

3. 使用 Git 初始化本地项目

接下来,我们需要将本地的 C# 项目与刚刚创建的 GitHub 仓库进行关联。

3.1 打开终端/命令行

在你的电脑中打开命令行工具,进入你保存 C# 项目的目录。例如:

1
cd path/to/your/csharp/project

3.2 初始化 Git 仓库

输入以下命令将当前项目目录初始化为 Git 仓库:

1
git init

3.3 添加文件到 Git

使用以下命令将项目中的所有文件添加到 Git 仓库:

1
git add .

3.4 提交代码

使用 git commit 命令提交代码,添加注释描述你的提交:

1
git commit -m "初次提交 C# 控制台应用"

3.5 关联远程仓库

关联本地仓库与远程的 GitHub 仓库。在命令中,请注意替换 <your_username><repository_name>

1
git remote add origin https://github.com/<your_username>/MyFirstCSharpApp.git

3.6 推送代码到 GitHub

最后,使用以下命令将代码推送到远程仓库:

1
git push -u origin master

如果你使用的 Git 版本较新,可能会提示使用 main 作为主分支。这种情况下,你可以替换命令中的 mastermain

4. 验证代码托管

现在,我们可以回到 GitHub 的网页上,刷新页面。你应该能够看到刚刚推送的文件和代码。

5. 后续的代码管理

在未来的开发中,你可能需要进行新的代码变更和更新。这些更新通常包括以下步骤:

  1. 进行代码修改并保存。
  2. 使用 git add . 添加更改。
  3. 使用 git commit -m "你的描述" 提交更改。
  4. 使用 git push origin master 将更改推送到 GitHub

这些步骤将保证你在 GitHub 上的代码始终是最新的。

6. 小练习:更新项目

为了巩固前面的内容,进行以下小练习:

  1. 在你的控制台应用中添加一些新的功能或修改现有代码。
  2. 经过修改后,使用上述步骤 addcommitpush 更新到 GitHub

结束语

通过本篇教程,你已经学会了如何将你的简单 C# 项目托管到 GitHub。这不仅可以帮助你更好地管理代码,还能与他人分享你的作品。在下一篇中,我们将进一步探索如何使用 Git 的分支功能和合并请求来管理代码。继续加油!

分享转发