-------------------------------------
https://www.bilibili.com/video/av8915750?p=31
判断语句
C# 提供了以下类型的判断语句。点击链接查看每个语句的细节。
语句 | 描述 |
---|---|
if 语句 | 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。 |
if...else 语句 | 一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。 |
嵌套 if 语句 | 您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。 |
switch 语句 | 一个 switch 语句允许测试一个变量等于多个值时的情况。 |
嵌套 switch 语句 | 您可以在一个 switch 语句内使用另一个 switch 语句。 |
语法:if(boolean_expression){ /* 如果布尔表达式为真将执行的语句 */}
语法:
if(boolean_expression) { /* 如果布尔表达式为真将执行的语句 */ } else { /* 如果布尔表达式为假将执行的语句 */ }
bool condition = true;
if (condition)
{
Console.WriteLine("The variable is set to true.");
}
else
{
Console.WriteLine("The variable is set to false.");
}
if...多重else if...else...语法:
if(boolean_expression 1) { /* 当布尔表达式 1 为真时执行 */ } else if( boolean_expression 2) { /* 当布尔表达式 2 为真时执行 */ } else if( boolean_expression 3) { /* 当布尔表达式 3 为真时执行 */ } else { /* 当上面条件都不为真时执行 */ }
Console.Write("Enter a character: ");
char ch = (char)Console.Read();
if (Char.IsUpper(ch))
{
Console.WriteLine("The character is an uppercase letter.");
}
else if (Char.IsLower(ch))
{
Console.WriteLine("The character is a lowercase letter.");
}
else if (Char.IsDigit(ch))
{
Console.WriteLine("The character is a number.");
}
else
{
Console.WriteLine("The character is not alphanumeric.");
}
嵌套if语法:
if( boolean_expression 1) { /* 当布尔表达式 1 为真时执行 */ if(boolean_expression 2) { /* 当布尔表达式 2 为真时执行 */ } }
视频讲座:https://www.bilibili.com/video/av8915750?p=37
异常参见https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/exceptions/(微软官方)或https://www.runoob.com/csharp/csharp-exception-handling.html
try...catch语句
语法:
try
{
// 引起异常的语句
}
catch( ExceptionName e1 )
{
// 错误处理代码
}
catch( ExceptionName e2 )
{
// 错误处理代码
}
catch( ExceptionName eN )
{
// 错误处理代码
}
finally
{
// 要执行的语句
}
看下例代码,是没有使用异常处理的例子-当程序要求输入年龄而用户输入字符串的时候程序出现异常而意外终止:
修改代码,使用try...catch判断输入数据是否有误,令代码健壮,示例如下:
如上,当用户输入的数据符合我们的预期(用户正常输入数字),程序正常执行;而当用户执着的输入非数字型数据时,程序的异常处理代码进行相应处理.这样我们的代码更加健壮而不会随时出现异常而意外终止.
修改代码:当用户输错数据时重新要求用户输入数据,直到输入正确数据为止,代码如下:
语法:
switch(匹配表达式){
case constant-expression :
statement(s);
break;
case constant-expression :
statement(s);
break;
/* 多个case 语句 */
default : /* 可选的 */
statement(s);
break;
}
在 C# 6 及更低版本中,匹配表达式必须是返回以下类型值的表达式:
int
或 long
。从 C# 7.0 开始,匹配表达式可以是任何非 null 表达式。
参见https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/switch(微软官方)或https://www.runoob.com/csharp/csharp-switch.html
示例:
int caseSwitch = 1;
switch (caseSwitch)
{
case 1:
Console.WriteLine("Case 1");
break;
case 2:
Console.WriteLine("Case 2");
break;
default:
Console.WriteLine("Default case");
break;
}
C# 提供了以下几种循环类型。点击链接查看每个类型的细节。
循环类型 | 描述 |
---|---|
while 循环 | 当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。 |
for/foreach 循环 | 多次执行一个语句序列,简化管理循环变量的代码。 |
do...while 循环 | 除了它是在循环主体结尾测试条件外,其他与 while 语句类似。 |
嵌套循环 | 您可以在 while、for 或 do..while 循环内使用一个或多个循环。 |
参见https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/while
语法:
while(condition) { statement(s); }
示例:
int n = 0;
while (n < 5)
{
Console.WriteLine(n);
n++;
}
示例-从1加到100:
示例-登录校验密码.用户名或密码错误就会一直要求输入用户名和密码:
参见https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/do
语法:
do { statement(s); }while( condition );
示例:
int n = 0;
do
{
Console.WriteLine(n);
n++;
} while (n < 5);
参见https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/break(微软官方)或https://www.runoob.com/csharp/csharp-break-statement.html
用途:break语句用于跳出循环体或switch语句的case块.
参见https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/for(微软官方)或https://www.runoob.com/csharp/csharp-for-loop.html
语法:
for ( init; condition; increment ) { statement(s); }
示例:
for (int i = 0; i < 5; i++)
{
Console.WriteLine(i);
}
参见https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/foreach-in或https://www.runoob.com/csharp/csharp-for-loop.html
示例
int[] fibarray = new int[] { 0, 1, 1, 2, 3, 5, 8, 13 };
foreach (int element in fibarray)
{
System.Console.WriteLine(element);
}
System.Console.WriteLine();
字符串转数值可使用Parse和TryParse方法.
注意:Convert.ToInt32("string")本质上调用int.Parse("string")方法
int.Parse方法:将字符串转换为数值,失败则抛出异常.
int.TryParse方法:尝试将字符串转换为数值.转换失败不会抛出异常.
参见https://docs.microsoft.com/zh-cn/dotnet/api/system.int32.tryparse
TryParse示例:
String[] values = { null, "160519", "9432.0", "16,667",
" -322 ", "+4302", "(100);", "01FA" };
foreach (var value in values)
{
int number;
bool success = Int32.TryParse(value, out number);
if (success)
{
Console.WriteLine("Converted '{0}' to {1}.", value, number);
}
else
{
Console.WriteLine("Attempted conversion of '{0}' failed.",
value ?? "");
}
}
continue会跳过本轮循环,直接开始下一轮循环。
参见https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/continue或https://www.runoob.com/csharp/csharp-continue-statement.html
示例-利用循环求1-100之间质数
示例-两数取大值:
示例-产生100个1(含)至100(含)之间的整数: