前置博客为:C#(Csharp)基础教程(上)(菜鸟教程笔记)
内容包括:C#概述及开发环境简介、C# 程序结构、C# 基本语法、C# 数据类型、C# 类型转换、C# 变量、C# 常量、C# 运算符。

目录

  • 1. C# 判断
    • 1.1 if 语句
    • 1.2 if...else语句
      • 1.2.1 if...else if...else 语句
    • 1.3 嵌套if语句
    • 1.4 switch语句
    • 1.5 嵌套 switch 语句
    • 1.6 `?:`运算符
  • 2. C# 循环
    • 2.1 循环类型
      • 2.1.1 while 循环
      • 2.1.2 for/foreach 循环
      • 2.1.3 do...while 循环
      • 2.1.4 嵌套循环
    • 2.2 循环控制语句
      • 2.2.1 break 语句
      • 2.2.2 continue 语句
    • 2.3 无限循环
  • 3. C# 封装
  • 4. C# 方法
  • 5. C# 可空类型(Nullable)
  • 6. C# 数组(Array)
  • 7. C# 字符串(String)
  • 8. C# 结构体(Struct)
  • 9. C# 枚举(Enum)

1. C# 判断

判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。

下面是大多数编程语言中典型的判断结构的一般形式:

1.1 if 语句

一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。

C# 中 if 语句的语法:

if (boolean_expression)
{/* 如果布尔表达式为真将执行的语句 */
}

如果布尔表达式为 true,则 if 语句内的代码块将被执行。如果布尔表达式为 false,则 if 语句结束后的第一组代码(闭括号后)将被执行。

流程图如下:

if语句实例:

using System;namespace DecisionMaking
{class Program{static void Main(string[] args){/* 局部变量定义 */int a = 10;/* 使用 if 语句检查布尔条件 */if (a < 20){/* 如果条件为真,则输出下面的语句 */Console.WriteLine("a 小于 20");}Console.WriteLine("a 的值是 {0}", a);Console.ReadLine();}}
}
a 小于 20
a 的值是 10

1.2 if…else语句

一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。

C# 中 if…else 语句的语法:

if(boolean_expression)
{/* 如果布尔表达式为真将执行的语句 */
}
else
{/* 如果布尔表达式为假将执行的语句 */
}

如果布尔表达式为 true,则执行 if 块内的代码。如果布尔表达式为 false,则执行 else 块内的代码。

流程图为:

if…else语句实例:

using System;namespace DecisionMaking
{class Program{static void Main(string[] args){/* 局部变量定义 */int a = 100;/* 检查布尔条件 */if (a < 20){/* 如果条件为真,则输出下面的语句 */Console.WriteLine("a 小于 20");}else{/* 如果条件为假,则输出下面的语句 */Console.WriteLine("a 大于 20");}Console.WriteLine("a 的值是 {0}", a);Console.ReadLine();}}
}
a 大于 20
a 的值是 100

1.2.1 if…else if…else 语句

一个 if 语句后可跟一个可选的 else if…else 语句,这可用于测试多种条件。
当使用 if…else if…else 语句时,以下几点需要注意:

  • 一个 if 后可跟零个或一个 else,它必须在任何一个 else if 之后。
  • 一个 if 后可跟零个或多个 else if,它们必须在 else 之前。
  • 一旦某个 else if 匹配成功,其他的 else if 或 else 将不会被测试。

C# 中的 if…else if…else 语句的语法:

if(boolean_expression 1)
{/* 当布尔表达式 1 为真时执行 */
}
else if( boolean_expression 2)
{/* 当布尔表达式 2 为真时执行 */
}
else if( boolean_expression 3)
{/* 当布尔表达式 3 为真时执行 */
}
else
{/* 当上面条件都不为真时执行 */
}

if…else if…else 语句实例:

using System;namespace DecisionMaking
{class Program{static void Main(string[] args){/* 局部变量定义 */int a = 100;/* 检查布尔条件 */if (a == 10){/* 如果 if 条件为真,则输出下面的语句 */Console.WriteLine("a 的值是 10");}else if (a == 20){/* 如果 else if 条件为真,则输出下面的语句 */Console.WriteLine("a 的值是 20");}else if (a == 30){/* 如果 else if 条件为真,则输出下面的语句 */Console.WriteLine("a 的值是 30");}else{/* 如果上面条件都不为真,则输出下面的语句 */Console.WriteLine("没有匹配的值");}Console.WriteLine("a 的准确值是 {0}", a);Console.ReadLine();}}
}
没有匹配的值
a 的准确值是 100

1.3 嵌套if语句

在 C# 中,嵌套 if-else 语句是合法的,这意味着您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。

C# 中 嵌套 if 语句的语法:

if( boolean_expression 1)
{/* 当布尔表达式 1 为真时执行 */if(boolean_expression 2){/* 当布尔表达式 2 为真时执行 */}
}

嵌套 if 语句的实例:

using System;namespace DecisionMaking
{class Program{static void Main(string[] args){//* 局部变量定义 */int a = 100;int b = 200;/* 检查布尔条件 */if (a == 100){/* 如果条件为真,则检查下面的条件 */if (b == 200){/* 如果条件为真,则输出下面的语句 */Console.WriteLine("a 的值是 100,且 b 的值是 200");}}Console.WriteLine("a 的准确值是 {0}", a);Console.WriteLine("b 的准确值是 {0}", b);Console.ReadLine();}}
}
a 的值是 100,且 b 的值是 200
a 的准确值是 100
b 的准确值是 200

1.4 switch语句

一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。

C# 中 switch 语句的语法:

switch(expression){case constant-expression  :statement(s);break; case constant-expression  :statement(s);break; /* 您可以有任意数量的 case 语句 */default : /* 可选的 */statement(s);break;
}

switch 语句必须遵循下面的规则:

  • switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型
  • 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
  • case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量
  • 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
  • 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
  • 不是每一个 case 都需要包含 break。如果 case 语句为空,则可以不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
  • C# 不允许从一个开关部分继续执行到下一个开关部分。如果 case 语句中有处理语句,则必须包含 break 或其他跳转语句
  • 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
  • C# 不支持从一个 case 标签显式贯穿到另一个 case 标签。如果要使 C# 支持从一个 case 标签显式贯穿到另一个 case 标签,可以使用 goto 一个 switch-case 或 goto default。

switch语句实例:

using System;namespace DecisionMaking
{class Program{static void Main(string[] args){/* 局部变量定义 */char grade = 'B';switch (grade){case 'A':Console.WriteLine("很棒!");break;case 'B':case 'C':Console.WriteLine("做得好");break;case 'D':Console.WriteLine("您通过了");break;case 'F':Console.WriteLine("最好再试一下");break;default:Console.WriteLine("无效的成绩");break;}Console.WriteLine("您的成绩是 {0}", grade);Console.ReadLine();}}
}
做得好
您的成绩是 B

1.5 嵌套 switch 语句

您可以把一个 switch 作为一个外部 switch 的语句序列的一部分,即可以在一个 switch 语句内使用另一个 switch 语句。即使内部和外部 switch 的 case 常量包含共同的值,也没有矛盾。

C# 中 嵌套 switch 语句的语法:

switch(ch1)
{case 'A':printf("这个 A 是外部 switch 的一部分" );switch(ch2){case 'A':printf("这个 A 是内部 switch 的一部分" );break;case 'B': /* 内部 B case 代码 */}break;case 'B': /* 外部 B case 代码 */
}

嵌套switch语句实例:

using System;namespace DecisionMaking
{class Program{static void Main(string[] args){int a = 100;int b = 200;switch (a){case 100:Console.WriteLine("这是外部 switch 的一部分");switch (b){case 200:Console.WriteLine("这是内部 switch 的一部分");break;}break;}Console.WriteLine("a 的准确值是 {0}", a);Console.WriteLine("b 的准确值是 {0}", b);Console.ReadLine();}}
}
这是外部 switch 的一部分
这是内部 switch 的一部分
a 的准确值是 100
b 的准确值是 200

1.6 ?:运算符

条件运算符 ? :可以用来替代if...else语句。

它的一般形式如下:

Exp1 ? Exp2 : Exp3;

其中,Exp1、Exp2 和 Exp3 是表达式。请注意,冒号的使用和位置。

? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。

2. C# 循环

有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。
编程语言提供了允许更为复杂的执行路径的多种控制结构。
循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的一般形式:

2.1 循环类型

2.1.1 while 循环

只要给定的条件为真,C# 中的 while 循环语句会重复执行一个目标语句。

C# 中 while 循环的语法:

while(condition)
{statement(s);
}

在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。condition 可以是任意的表达式,当为任意非零值时都为真。当条件为真时执行循环。

当条件为假时,程序流将继续执行紧接着循环的下一条语句。

流程图:

在这里,while 循环的关键点是循环可能一次都不会执行。当条件被测试且结果为假时,会跳过循环主体,直接执行紧接着 while 循环的下一条语句。

while循环实例:

using System;namespace Loops
{class Program{static void Main(string[] args){/* 局部变量定义 */int a = 10;/* while 循环执行 */while (a < 20){Console.WriteLine("a 的值: {0}", a);a++;}Console.ReadLine();}}
}
a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 15
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19

2.1.2 for/foreach 循环

一个 for 循环是一个允许您编写一个执行特定次数的循环的重复控制结构。

C# 中 for 循环的语法:

for ( init; condition; increment )
{statement(s);
}

下面是 for 循环的控制流:

  1. init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。
  2. 接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
  3. 在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
  4. 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。

流程图为:

for循环实例:

using System;namespace Loops
{class Program{static void Main(string[] args){/* for 循环执行 */for (int a = 10; a < 20; a = a + 1){Console.WriteLine("a 的值: {0}", a);}Console.ReadLine();}}
}
a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 15
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19

C# 也支持 foreach 循环,使用foreach可以迭代数组或者一个集合对象。

foreach循环实例如下:

class ForEachTest
{static void Main(string[] args){int[] fibarray = new int[] { 0, 1, 1, 2, 3, 5, 8, 13 };foreach (int element in fibarray)//依次迭代数组内的整型,迭代一次执行一次循环语句{System.Console.WriteLine(element);//每次循环需要执行的内容}System.Console.WriteLine();// 类似 foreach 循环for (int i = 0; i < fibarray.Length; i++)//确定i的值,{System.Console.WriteLine(fibarray[i]);//输出数组中第i个值}System.Console.WriteLine();// 设置集合中元素的计算器int count = 0;foreach (int element in fibarray){count += 1;System.Console.WriteLine("Element #{0}: {1}", count, element);//count值反映了循环主体的执行次数,从1开始代表了数组中第一个整型,依次往后}System.Console.WriteLine("Number of elements in the array: {0}", count);}
}
0
1
1
2
3
5
8
130
1
1
2
3
5
8
13Element #1: 0
Element #2: 1
Element #3: 1
Element #4: 2
Element #5: 3
Element #6: 5
Element #7: 8
Element #8: 13
Number of elements in the array: 8

以上实例有三个部分:

  • 通过 foreach 循环输出整型数组中的元素。
  • 通过 for 循环输出整型数组中的元素。
  • foreach 循环设置数组元素的计算器。

2.1.3 do…while 循环

不像 for 和 while 循环,它们是在循环头部测试循环条件。do…while 循环是在循环的尾部检查它的条件。

do…while 循环与 while 循环类似,但是 do…while 循环会确保至少执行一次循环。

C# 中 do…while 循环的语法:

do
{statement(s);}while( condition );

请注意,条件表达式出现在循环的尾部,所以循环中的 statement(s) 会在条件被测试之前至少执行一次。

如果条件为真,控制流会跳转回上面的 do,然后重新执行循环中的 statement(s)。这个过程会不断重复,直到给定条件变为假为止。

流程图为:

do…while循环实例:

using System;namespace Loops
{class Program{static void Main(string[] args){/* 局部变量定义 */int a = 10;/* do 循环执行 */do{Console.WriteLine("a 的值: {0}", a);a = a + 1;} while (a < 20);Console.ReadLine();}}
}
a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 15
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19

2.1.4 嵌套循环

C# 允许在一个循环内使用另一个循环。

C# 中 嵌套 for 循环 语句的语法:

for ( init; condition; increment )
{for ( init; condition; increment ){statement(s);}statement(s);
}

C# 中 嵌套 while 循环 语句的语法:

while(condition)
{while(condition){statement(s);}statement(s);
}

C# 中 嵌套 do…while 循环 语句的语法:

do
{statement(s);do{statement(s);}while( condition );}while( condition );

关于嵌套循环有一点值得注意,您可以在任何类型的循环内嵌套其他任何类型的循环。比如,一个 for 循环可以嵌套在一个 while 循环内,反之亦然。

嵌套循环实例:
下面的程序使用了一个嵌套的 for 循环来查找 2 到 100 中的质数:

using System;namespace Loops
{class Program{static void Main(string[] args){/* 局部变量定义 */int i, j;for (i = 2; i < 100; i++){for (j = 2; j <= (i / j); j++) // 若j|i,则(i/j)|i,满足j<=(i/j),也即j<=sqrt(i)if ((i % j) == 0) break; // 如果找到,则不是质数if (j > (i / j)) //若j>(i/j),说明i已经通过上面的for循环并且没有break,说明i为质数。Console.WriteLine("{0} 是质数", i);}Console.ReadLine();}}
}
2 是质数
3 是质数
5 是质数
7 是质数
11 是质数
13 是质数
17 是质数
19 是质数
23 是质数
29 是质数
31 是质数
37 是质数
41 是质数
43 是质数
47 是质数
53 是质数
59 是质数
61 是质数
67 是质数
71 是质数
73 是质数
79 是质数
83 是质数
89 是质数
97 是质数

2.2 循环控制语句

2.2.1 break 语句

C# 中 break 语句有以下两种用法:

  1. 当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
  2. 它可用于终止 switch 语句中的一个 case。

如果您使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。

C# 中 break 语句的语法:

break;

流程图为

break实例:

using System;namespace Loops
{class Program{static void Main(string[] args){/* 局部变量定义 */int a = 10;/* while 循环执行 */while (a < 20){Console.WriteLine("a 的值: {0}", a);a++;if (a > 15){/* 使用 break 语句终止 loop */break;}}Console.ReadLine();}}
}
a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 15

2.2.2 continue 语句

C# 中的 continue 语句有点像 break 语句。但它不是强迫终止,continue 会跳过当前循环中的代码,强迫开始下一次循环。

对于 for 循环,continue 语句会导致执行条件测试和循环增量部分。对于 while 和 do…while 循环,continue 语句会导致程序控制回到条件测试上。

C# 中 continue 语句的语法:

continue;

流程图为

continue实例

using System;namespace Loops
{class Program{static void Main(string[] args){/* 局部变量定义 */int a = 10;/* do 循环执行 */do{if (a == 15){/* 跳过迭代 */a = a + 1;continue;}Console.WriteLine("a 的值: {0}", a);a++;} while (a < 20);Console.ReadLine();}}
}
a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19

2.3 无限循环

如果条件永远不为假,则循环将变成无限循环。for 循环在传统意义上可用于实现无限循环。由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环。

实例

using System;namespace Loops
{class Program{static void Main(string[] args){for (; ; ){Console.WriteLine("Hey! I am Trapped");}}}
}

当条件表达式不存在时,它被假设为真。您也可以设置一个初始值和增量表达式,但是一般情况下,程序员偏向于使用 for( ; ; ) 结构来表示一个无限循环。

3. C# 封装

4. C# 方法

5. C# 可空类型(Nullable)

6. C# 数组(Array)

7. C# 字符串(String)

8. C# 结构体(Struct)

9. C# 枚举(Enum)

C#(Csharp)基础教程(中)(菜鸟教程笔记)相关推荐

  1. C#(Csharp)基础教程(上)(菜鸟教程笔记)

    博客已更新:C#(Csharp)基础教程(中)(菜鸟教程笔记) 内容包括:判断.循环.封装.方法.可空类型.数组.字符串.结构体.枚举. 目录 1. C# 及其开发环境简介 1.1 C# 概述 1.2 ...

  2. python学习笔记1——(廖雪峰教程,菜鸟教程)python基础

    python学习笔记1--(廖雪峰教程,菜鸟教程) https://www.liaoxuefeng.com(https://www.liaoxuefeng.com) 阿修视频 .Python基础(复习 ...

  3. Jquery基础知识之菜鸟教程

    jquery核心: write less do more1.jQuery 语法基础语法: $(selector).action();2.文档就绪事件 :文档完全加载完后执行函数第一种方式: $(doc ...

  4. JS 基础知识之菜鸟教程(2016-09-30)

    //2016-09-30 重读菜鸟教程上JS教程同时摘录重要知识点 1.JavaScript 输出几种方式:使用 window.alert() 弹出警告框.使用 document.write() 方法 ...

  5. java script 菜鸟教程_JS 基础知识之菜鸟教程(2016-09-30)

    //2016-09-30 重读菜鸟教程上JS教程同时摘录重要知识点 1.JavaScript 输出几种方式: 使用 window.alert() 弹出警告框. 使用 document.write() ...

  6. python菜鸟教程h-python菜鸟教程,python好玩又简单的代码

    如果是零基础的话推荐你看以下几本书,入门来说都还不错:"笨办法"学Python(第3版)HeadFirstPython(中文版)父与子的编程之旅:与小卡特一起学Python pyt ...

  7. 【转载】Node.js 教程(菜鸟教程系列)

    很好的一篇教程:Node.js 教程 简单做下笔记 概述 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立 ...

  8. Perl教程_编程入门自学教程_菜鸟教程-免费教程分享

    教程简介 Perl入门教程 - 从基本到高级概念的简单简单步骤了解Perl,包括简介,环境,语法,数据类型,变量,标量,数组,哈希,IF ... ELSE,循环,运算符,日期和时间,子程序,引用,格式 ...

  9. Unix教程_编程入门自学教程_菜鸟教程-免费教程分享

    教程简介 UNIX / Linux操作系统(OS)入门教程 - 从基本概念开始,简单易学地了解UNIX的基础知识,包括入门,Unix Korn和Bourne Shell和编程,文件权限/访问模式,环境 ...

最新文章

  1. C语言第五讲,语句 顺序循环选择.
  2. 【Python】Python语言学习:设计模式、单例模式
  3. appium查看控件的方法
  4. oracle10g自带的公共同义词,Oracle10g实战教程第07讲视图、同义词、序列
  5. 从进程组、会话、终端的概念深入理解守护进程
  6. Spring MVC-页面重定向示例(转载实践)
  7. thinkphp5 return 返回空_杨丞琳演唱会意外踩空,从两层楼高的舞台掉落,李荣浩心疼发文...
  8. 华为软挑2019总结
  9. 华硕主板升级BIOS的全过程,用华硕的小伙伴都忍不住升级啦!
  10. 静态路由只配置出接口网络不通(实验)
  11. 查理芒格推荐的100个思维模型
  12. logstash的dissect匹配字符串内置双引号时需要注意的问题
  13. 颅内EEG记录揭示人类DMN网络的电生理基础
  14. Scrum板与Kanban如何抉择?敏捷工具:plcbpb板与按照kjuaoxnu
  15. Mysql删除百万数据提升速度方法
  16. arecord录制音频和aplay播放音频用法说明
  17. megaface初试
  18. 细读:关于搜索引擎及其开发,我的疑问和思考
  19. 微信小程序能实现盈利的7大流量主广告组件及其分成模式概览
  20. Microsoft Security Essentials 微软免费杀毒软件下载

热门文章

  1. 中国移动高举Linux大旗阔步向前
  2. 拆机记录02——笔记本锂电池
  3. 简单了解------网络搭建
  4. 从人工智能名片到超级智能应用生态
  5. 如何通过Java批量重命名文件名称
  6. EasyExcel简介 和 使用
  7. 强化学习基础知识梳理(4)
  8. 《信息安全保障》一1.2 信息安全保障概念与模型
  9. 无聊中?天天穿格格衫,来为你的网站画个网格线背景吧!小白也能看懂。(Html5 Canvas实现网格线背景)
  10. python写的创世区块