C#3 - 流程控制

if/else, while, for, switch之类的与其他语言差不多,对其他语言有一点了解的话基本可以做到无缝衔接。

就以几个例子带过这个部分吧。

Demo1 if/else & while

依旧是Program.cs,将代码替换成如下:

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyFirstProject{
class Program{
static void Main(string[] args){
int productId;
double price;
for (int i = 0; i < 5; i++)
{
Console.WriteLine("输入产品资料: 产品id和价格");
productId = Convert.ToInt32(Console.ReadLine());
price = Convert.ToDouble(Console.ReadLine());
if (price <= 0)
{
Console.WriteLine("价格无法小于等于0");
i--;
}
}
}
}
}

这里使用了if/else作为流程控制,当价格小于等于0的时候,会要求用户重新输入id和价格。


以下代码将if/else更换成while进行流程控制:

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
27
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyFirstProject{
class Program{
static void Main(string[] args){
int productId;
double price;
int i = 0;
while (i <= 5)
{
Console.WriteLine("输入产品资料: 产品id和价格");
productId = Convert.ToInt32(Console.ReadLine());
price = Convert.ToDouble(Console.ReadLine());
if (price <= 0)
{
Console.WriteLine("价格无法小于等于0");
i--;
}
i++;
}
}
}
}

Demo2 switch

switchif else-if else有点的相似。

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyFirstProject{
class Program{
static void Main(string[] args){
int day = 1;
string dayString;
switch (day)
{
case 1:
dayString = "周日";
case 2:
dayString = "周一";
break;
case 3:
dayString = "周二";
break;
case 4:
dayString = "周三";
break;
case 5:
dayString = "周四";
break;
case 6:
dayString = "周五";
break;
case 7:
dayString = "周六";
break;
default:
dayString = "不在周一到周日间";
break;
}
Console.WriteLine(dayString);
}
}
}

以上代码,day1或者2的时候会输出周一,在3-7分别输出对应日期,超过以上区间会输出不在周一到周日间


但是,如果在case 1:下加入代码的话,就会造成编译错误:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyFirstProject{
class Program{
static void Main(string[] args){
int day = 1;
string dayString;
switch (day)
{
case 1:
dayString = "周日";
case 2:
dayString = "周一";
break;
case 3:
dayString = "周二";
break;
case 4:
dayString = "周三";
break;
case 5:
dayString = "周四";
break;
case 6:
dayString = "周五";
break;
case 7:
dayString = "周六";
break;
default:
dayString = "不在周一到周日间";
break;
}
Console.WriteLine(dayString);
}
}
}

如下:

MyFirstProject\MyFirstProject\Program.cs(14,17,14,24): error CS0163: Control cannot fall through from one case label (‘case 1:’) to another

这点与其他的语言稍微有所不同


Demo3 break & continue

continue关键字会跳过剩下的代码,进入下一个循环。break会跳出当前循环。

代码如下:

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
27
28
29
30
31
32
33
34
35
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyFirstProject{
class Program{
static void Main(string[] args)
{
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue;
}
else
{
for (int j = 1; j <= 10; j++)
{
if (j != i)
{
Console.WriteLine(j);
}
else
{
break;
}
}
}
Console.WriteLine("");
}
}
}
}

以上代码在遇到i是偶数时,进入if语句后跳过当前循环,进入下一个循环。

i是奇数时,进入else语句,进入另一个循环。在这个循环中,当j不等于i的时候,会在console上打印出j的当前数,而在ij相等的时候跳出当前循环。

-------The end of this article  Thank you for your reading-------
0%