“好读书,不求甚解;每有会意,便欣然忘食。”
文章目录
- 前言
- 文章有误敬请斧正 不胜感恩!||Day03
- 一、C#分支语句
- `if` 语句
- `else if` 语句
- `else` 语句
- `switch` 语句
- 三元运算符
- 二、C#循环语句
- `for` 循环
- `while` 循环
- `do-while` 循环
- `foreach` 循环
- 使用 `break` 和 `continue`
- 以上是 C# 中常用的循环语句,通过这些语句可以高效地重复执行代码,处理大量数据和任务。
- 三、C#数组
- 一维数组
- 声明和初始化
- 访问数组元素
- 遍历数组
- 多维数组
- 声明和初始化
- 访问多维数组元素
- 示例:计算数组元素的总和
- C#数组与C、C++、Java等有什么区别和相同之处?
- 相同之处
- 区别
- 声明和初始化
- 访问元素和遍历数组
- 多维数组
- 内存管理
- 越界检查
- 数组的长度
- 总结
前言
昨天我们学习了C#语言的语法基础部分,今天我们来学习C#语言的分支 循环和数组:
与 C 语言家族中的所有语言一样,分号 (;) 定义语句的结束。 C# 标识符区分大小写。 C# 同样使用大括号({ 和 })、控制语句(例如 if、else 和 switch)以及循环结构(例如 for 和 while)。 C# 还具有适用于任何集合类型的 foreach 语句。
文章有误敬请斧正 不胜感恩!||Day03
以下是本篇文章正文内容
一、C#分支语句
C# 中的分支语句用于根据条件执行不同的代码路径。常见的分支语句包括 if
、else if
、else
、switch
和三元运算符。
if
语句
if
语句用于根据条件判断来执行一段代码。
int number = 10;
if (number > 5)
{
Console.WriteLine("The number is greater than 5.");
}
else if
语句
else if
语句用于在前面的 if
条件不满足时,检查其他条件。
int number = 10;
if (number > 15)
{
Console.WriteLine("The number is greater than 15.");
}
else if (number > 5)
{
Console.WriteLine("The number is greater than 5 but less than or equal to 15.");
}
else
语句
else
语句在所有前面的条件都不满足时执行。
int number = 3;
if (number > 15)
{
Console.WriteLine("The number is greater than 15.");
}
else if (number > 5)
{
Console.WriteLine("The number is greater than 5 but less than or equal to 15.");
}
else
{
Console.WriteLine("The number is 5 or less.");
}
switch
语句
switch
语句用于根据一个变量的不同值执行不同的代码块。它是 if-else
语句的一种简化写法。
int dayOfWeek = 3;
switch (dayOfWeek)
{
case 1:
Console.WriteLine("Monday");
break;
case 2:
Console.WriteLine("Tuesday");
break;
case 3:
Console.WriteLine("Wednesday");
break;
case 4:
Console.WriteLine("Thursday");
break;
case 5:
Console.WriteLine("Friday");
break;
case 6:
Console.WriteLine("Saturday");
break;
case 7:
Console.WriteLine("Sunday");
break;
default:
Console.WriteLine("Invalid day");
break;
}
三元运算符
三元运算符用于简写简单的 if-else
语句。
int number = 10;
string result = (number > 5) ? "Greater than 5" : "5 or less";
Console.WriteLine(result);
通过这些分支语句可以根据不同的条件执行不同的代码块,从而实现更复杂的逻辑控制。
二、C#循环语句
C# 中的循环语句用于重复执行一段代码,直到满足特定条件。常见的循环语句包括 for
循环、while
循环、do-while
循环和 foreach
循环。以下是每种循环语句的简要说明和示例:
for
循环
for
循环通常用于需要重复执行已知次数的循环。它包含初始化语句、条件表达式和迭代语句。
for (int i = 0; i < 5; i++)
{
Console.WriteLine("i = " + i);
}
while
循环
while
循环在每次迭代前都会检查条件表达式,只有条件为真时才会执行循环体。
int i = 0;
while (i < 5)
{
Console.WriteLine("i = " + i);
i++;
}
do-while
循环
do-while
循环类似于 while
循环,但它会先执行一次循环体,然后再检查条件表达式。
int i = 0;
do
{
Console.WriteLine("i = " + i);
i++;
} while (i < 5);
foreach
循环
foreach
循环用于遍历集合或数组中的每一个元素。
int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int number in numbers)
{
Console.WriteLine("number = " + number);
}
使用 break
和 continue
在循环中,break
语句用于提前终止循环,而 continue
语句用于跳过当前迭代并开始下一次迭代。
for (int i = 0; i < 10; i++)
{
if (i == 3)
{
continue; // 跳过当前迭代
}
if (i == 7)
{
break; // 终止循环
}
Console.WriteLine("i = " + i);
}
以上是 C# 中常用的循环语句,通过这些语句可以高效地重复执行代码,处理大量数据和任务。
三、C#数组
C#数组与C、C++、Java等类似但是也有不同之处。
C# 中的数组是一种数据结构,用于存储具有相同数据类型的多个元素。数组可以是一维的,也可以是多维的(如二维数组)。C#数组的基本知识可以联系之前学过的主流语言来记忆。
一维数组
声明和初始化
你可以同时声明和初始化数组,也可以先声明后初始化。
// 同时声明和初始化
int[] numbers = new int[5]; // 声明一个包含 5 个整数的数组
// 使用数组初始化器
int[] numbers = { 1, 2, 3, 4, 5 }; // 声明并初始化一个包含 5 个整数的数组
// 先声明后初始化
int[] numbers;
numbers = new int[5];
numbers[0] = 1;
numbers[1] = 2;
// 依次类推
访问数组元素
可以通过索引访问数组元素,索引从 0 开始。
int[] numbers = { 1, 2, 3, 4, 5 };
int firstNumber = numbers[0]; // 1
int secondNumber = numbers[1]; // 2
numbers[2] = 10; // 修改第三个元素的值
Console.WriteLine(numbers[2]); // 10
遍历数组
可以使用 for
循环或 foreach
循环遍历数组。
int[] numbers = { 1, 2, 3, 4, 5 };
// 使用 for 循环
for (int i = 0; i < numbers.Length; i++)
{
Console.WriteLine(numbers[i]);
}
// 使用 foreach 循环
foreach (int number in numbers)
{
Console.WriteLine(number);
}
多维数组
声明和初始化
多维数组可以是矩形数组(每行有相同数量的列)或交错数组(即数组的数组)。
// 矩形数组
int[,] matrix = new int[3, 4]; // 声明一个 3 行 4 列的二维数组
// 初始化矩形数组
int[,] matrix =
{
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 }
};
// 交错数组(数组的数组)
int[][] jaggedArray = new int[3][]; // 声明一个包含 3 个一维数组的数组
jaggedArray[0] = new int[4];
jaggedArray[1] = new int[2];
jaggedArray[2] = new int[3];
// 初始化交错数组
int[][] jaggedArray =
{
new int[] { 1, 2, 3, 4 },
new int[] { 5, 6 },
new int[] { 7, 8, 9 }
};
访问多维数组元素
// 矩形数组
int[,] matrix =
{
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 }
};
int element = matrix[1, 2]; // 7
matrix[2, 3] = 20; // 修改元素
// 交错数组
int[][] jaggedArray =
{
new int[] { 1, 2, 3, 4 },
new int[] { 5, 6 },
new int[] { 7, 8, 9 }
};
int element = jaggedArray[1][1]; // 6
jaggedArray[2][0] = 10; // 修改元素
示例:计算数组元素的总和
int[] numbers = { 1, 2, 3, 4, 5 };
int sum = 0;
foreach (int number in numbers)
{
sum += number;
}
Console.WriteLine("Sum: " + sum); // 输出 Sum: 15
通过这些示例和解释,你可以看到 C# 数组如何声明、初始化、访问和操作。数组是处理多个相同类型数据的基本工具,在许多编程任务中都非常有用。
C#数组与C、C++、Java等有什么区别和相同之处?
C#、C、C++ 和 Java 中的数组有一些相同之处,也有一些关键的区别。以下是对它们的比较:
相同之处
- 基本概念:所有这些语言中的数组都是用于存储相同类型元素的集合,并且可以通过索引访问。
- 索引起始点:数组的索引在所有这些语言中都是从 0 开始的。
- 固定大小:在所有这些语言中,数组的大小在创建时确定并且不可更改。
区别
声明和初始化
-
C
int numbers[5]; // 声明一个包含 5 个整数的数组 int numbers[] = {1, 2, 3, 4, 5}; // 声明并初始化
-
C++
int numbers[5]; // 声明一个包含 5 个整数的数组 int numbers[] = {1, 2, 3, 4, 5}; // 声明并初始化
-
Java
int[] numbers = new int[5]; // 声明一个包含 5 个整数的数组 int[] numbers = {1, 2, 3, 4, 5}; // 声明并初始化
-
C#
int[] numbers = new int[5]; // 声明一个包含 5 个整数的数组 int[] numbers = {1, 2, 3, 4, 5}; // 声明并初始化
访问元素和遍历数组
-
C
for (int i = 0; i < 5; i++) { printf("%d\n", numbers[i]); }
-
C++
for (int i = 0; i < 5; i++) { std::cout << numbers[i] << std::endl; }
-
Java
for (int i = 0; i < numbers.length; i++) { System.out.println(numbers[i]); } // 或使用增强 for 循环 for (int number : numbers) { System.out.println(number); }
-
C#
for (int i = 0; i < numbers.Length; i++) { Console.WriteLine(numbers[i]); } // 或使用 foreach 循环 foreach (int number in numbers) { Console.WriteLine(number); }
多维数组
-
C
int matrix[3][4]; // 声明一个 3 行 4 列的二维数组
-
C++
int matrix[3][4]; // 声明一个 3 行 4 列的二维数组
-
Java
int[][] matrix = new int[3][4]; // 声明一个 3 行 4 列的二维数组
-
C#
int[,] matrix = new int[3, 4]; // 声明一个 3 行 4 列的二维数组
内存管理
-
C 和 C++:数组可以分配在栈或堆上。动态数组需要使用
malloc
或new
分配,使用free
或delete
释放。// C 中的动态数组 int* numbers = (int*)malloc(5 * sizeof(int)); free(numbers);
// C++ 中的动态数组 int* numbers = new int[5]; delete[] numbers;
-
Java 和 C#:数组是对象,分配在堆上,由垃圾回收器自动管理内存。
越界检查
- C 和 C++:没有内置的数组越界检查,可能会导致未定义行为。
- Java 和 C#:自动进行数组越界检查,如果访问越界会抛出
ArrayIndexOutOfBoundsException
(Java)或IndexOutOfRangeException
(C#)。
数组的长度
-
C 和 C++:没有内置的方法来获取数组长度,需要手动跟踪或计算。
int length = sizeof(numbers) / sizeof(numbers[0]);
-
Java 和 C#:有内置的属性来获取数组长度。
int length = numbers.length;
int length = numbers.Length;
通过以上比较,可以看到虽然 C#、C、C++ 和 Java 中的数组有许多相同的基本特性,但在声明、初始化、内存管理和边界检查等方面也存在显著差异。这些差异主要反映了这些语言设计上的不同理念和目标。
总结
以上就是今天所学内容。
在学习 C# 语言的分支、循环和数组后,我们了解到:分支语句(如 if
、else if
、else
、switch
和三元运算符)用于根据条件执行不同的代码路径;循环语句(如 for
、while
、do-while
和 foreach
)用于重复执行代码块;
数组用于存储和操作相同类型的数据,可以是一维或多维。
与 C、C++ 和 Java 类似但在声明、初始化、内存管理和边界检查上有所不同。
这些语言特性使得 C# 在处理复杂逻辑和数据操作时更加高效和灵活。