c#入门篇4

目录

一、分支结构: if else

二、 选择结构:  if else-if /switch-case 

 异常捕获(try-catch)

 三、循环结构

 四、程序调试

五、类型转换

1、Convert 类

2. Parse 方法

3. TryParse 方法

 六、三元表达式


一、分支结构: if else

1、顺序结构:程序从main函数进入,从上到下一行一行执行,不会落下任何一行

     循环结构: while do-while for foreach

if语句:

语法:

if(判断条件)

{

        要执行的代码;

}

判断条件:一般为关系表达式或者bool类型的值

执行过程:程序运行到if处,首先判断if所带的小括号中的判断条件

条件成立:返回true,执行if中大括号中的所有内容

条件不成立:返回false,跳过if语句,继续向下执行

特点:先判断 后执行 有可能一行代码都不执行,用于一种情况的判断

using System;

class Program
{
    static void Main()
    {
        // 输入一个整数
        Console.Write("请输入一个整数:");
        int number = int.Parse(Console.ReadLine());

        // 使用 if 语句进行条件判断
        if (number > 10)
        {
            Console.WriteLine("这个整数大于 10。");
        }

        if (number <= 10)
        {
            Console.WriteLine("这个整数小于或等于 10。");
        }
    }
}

 if else 语句 :

语法:

if(判断条件)

{

        执行的代码
}else{

}

执行过程:程序执行到if处,首先判断if所带的小括号中的判断条件是否成立

成立:返回true,则执行if所带的大括号中的代码,执行完成跳出if - else结构

不成立:返回false,跳出if语句,执行else所带的大括号中的语句,执行完成后,跳出if - else语句

特点:先判断 后执行 最少执行一行代码,用于两种情况的判断

using System;

class Program
{
    static void Main()
    {
        // 输入一个整数
        Console.Write("请输入一个整数:");
        int number = int.Parse(Console.ReadLine());

        // 使用 if 和 else 语句进行条件判断
        if (number % 2 == 0)
        {
            Console.WriteLine("这个整数是偶数。");
        }
        else
        {
            Console.WriteLine("这个整数是奇数。");
        }
    }
}

二、 选择结构:  if else-if /switch-case 

if else-if语句:

语法:

if(判断条件)

{

        要执行的代码;
}else if(判断条件)

{

        要执行的代码
}

else if(判断条件)

{

        要执行的代码
}

else if(判断条件)

{

        要执行的代码
}

else if(判断条件)

{

        要执行的代码
}......

else

{

        要执行的代码

}

执行过程:

  • 如果第一个 if 条件为真(true),则执行 if 块中的代码,之后跳过所有后续的 else if 和 else 块。
  • 如果第一个 if 条件为假(false),则继续检查下一个 else if 条件。
  • 如果某个 else if 条件为真,则执行该 else if 块中的代码,之后跳过所有后续的 else if 和 else 块。
  • 如果该 else if 条件为假,则继续检查下一个 else if 条件。
  • 如果所有 if 和 else if 条件都为假,则执行 else 块中的代码(如果存在 else)。

特点:特点:先判断 后执行 最少执行一行代码,用于多种情况的判断

using System;

class Program
{
    static void Main()
    {
        // 输入一个分数
        Console.Write("请输入分数:");
        int score = int.Parse(Console.ReadLine());

        // 使用 if-else if 语句判断成绩等级
        if (score >= 90)
        {
            Console.WriteLine("成绩等级是 A");
        }
        else if (score >= 80)
        {
            Console.WriteLine("成绩等级是 B");
        }
        else if (score >= 70)
        {
            Console.WriteLine("成绩等级是 C");
        }
        else if (score >= 60)
        {
            Console.WriteLine("成绩等级是 D");
        }
        else
        {
            Console.WriteLine("成绩等级是 F");
        }
    }
}
  •  异常捕获(try-catch)

1、语法上没有错误,在程序运行的过程当中,由于某些原因程序出现了问题,不能再正常运行了,引入try-catch来进行异常捕获

语法:

try

{

        可能出现异常的代码
}catch

{

        出现异常后要执行的代码

}

执行过程:如果try中的代码没有出现异常,那么catch中的代码不会执行,如果出现异常,直接跳到catch中执行处理异常的代码

using System;

class Program
{
    static void Main()
    {
        try
        {
            // 输入两个整数
            Console.Write("请输入第一个整数:");
            int num1 = int.Parse(Console.ReadLine());

            Console.Write("请输入第二个整数:");
            int num2 = int.Parse(Console.ReadLine());

            // 尝试进行除法运算
            int result = num1 / num2;
            Console.WriteLine("结果是: " + result);
        }
        catch (DivideByZeroException ex)
        {
            // 捕获并处理除零异常
            Console.WriteLine("错误:不能除以零。");
            Console.WriteLine("异常消息: " + ex.Message);
        }
        catch (FormatException ex)
        {
            // 捕获并处理格式异常(例如,用户输入非整数)
            Console.WriteLine("错误:输入格式不正确。");
            Console.WriteLine("异常消息: " + ex.Message);
        }
        catch (Exception ex)
        {
            // 捕获所有其他未指定的异常
            Console.WriteLine("发生了一个错误。");
            Console.WriteLine("异常消息: " + ex.Message);
        }
        finally
        {
            // 可选的 finally 块,总是会执行
            Console.WriteLine("程序执行完毕。");
        }
    }
}

switch case 语句:

语法:

switch(变量或者表达式的值)

{

        case 值1 : 要执行的代码;

        break;

        case 值2:: 要执行的代码;

        break;

        case 值3 : 要执行的代码;

        break;

         ........

        default    :   要执行的代码

        break;

}

执行过程 : 程序执行到switch处,首先将括号里的变量或者表达式的值计算出来,然后拿着这个值一次跟每个case后面所带的值进行匹配,一旦匹配成功则执行该case所在的代码,执行完成后遇到break,跳出switch-case结构,都不匹配,有defaul执行default,没有default则该结构都不执行

using System;

class Program
{
    static void Main()
    {
        Console.Write("请输入一个数字(1-7),代表星期一到星期日:");
        string input = Console.ReadLine();
        int dayNumber;

        if (int.TryParse(input, out dayNumber) && dayNumber >= 1 && dayNumber <= 7)
        {
            switch (dayNumber)
            {
                case 1:
                    Console.WriteLine("星期一");
                    break;
                case 2:
                    Console.WriteLine("星期二");
                    break;
                case 3:
                    Console.WriteLine("星期三");
                    break;
                case 4:
                    Console.WriteLine("星期四");
                    break;
                case 5:
                    Console.WriteLine("星期五");
                    break;
                case 6:
                    Console.WriteLine("星期六");
                    break;
                case 7:
                    Console.WriteLine("星期日");
                    break;
                default:
                    Console.WriteLine("输入的数字不在1到7之间。");
                    break;
            }
        }
        else
        {
            Console.WriteLine("输入无效,请输入一个介于1到7之间的数字。");
        }
    }
}

 三、循环结构

循环结构:while循环

语法:

while(循环条件)

{

        循环体;

}

执行过程:判断条件返回true,执行循环体,执行完成后再次判断条件,成立继续循环,不成立跳出循环,如果循环条件一直成立则称为死循环

using System;

class Program
{
    static void Main()
    {
        // 提示用户输入一个正整数
        Console.Write("请输入一个正整数:");
        int number = int.Parse(Console.ReadLine());

        // 确保输入的数字是正整数
        if (number <= 0)
        {
            Console.WriteLine("请输入一个正整数。");
            return;
        }

        int sum = 0;
        int i = 1;

        // 使用 while 循环计算从 1 到 number 的所有整数之和
        while (i <= number)
        {
            sum += i;
            i++;
        }

        // 输出结果
        Console.WriteLine("从 1 到 " + number + " 的总和是: " + sum);
    }
}

 do - while 循环

语法:

do{

        循环体;

}while(循环条件);

执行过程:先执行do中的循环体,执行完成后,判断循环条件,成立继续执行do中的循环体,不成立,跳出do-while循环

特点:先循环 在判断 至少执行一次循环

using System;

class Program
{
    static void Main()
    {
        // 提示用户输入一个正整数
        Console.Write("请输入一个正整数:");
        int number = int.Parse(Console.ReadLine());

        // 确保输入的数字是正整数
        if (number <= 0)
        {
            Console.WriteLine("请输入一个正整数。");
            return;
        }

        int sum = 0;
        int i = 1;

        // 使用 do-while 循环计算从 1 到 number 的所有整数之和
        do
        {
            sum += i;
            i++;
        } while (i <= number);

        // 输出结果
        Console.WriteLine("从 1 到 " + number + " 的总和是: " + sum);
    }
}
  • 关键字break

1、可以跳出switch case结构

2、可以跳出当前循环

break一般不单独使用,而是跟着if判断一起使用,表示,当满足某些条件的时候,就不再循环

using System;

class Program
{
    static void Main()
    {
        int number;

        // 创建一个无限循环
        while (true)
        {
            Console.Write("请输入一个正整数 (输入0退出):");
            number = int.Parse(Console.ReadLine());

            // 如果用户输入的是0,则使用break语句退出循环
            if (number == 0)
            {
                break;
            }

            // 输出用户的输入
            Console.WriteLine("输入的数字是:" + number);
        }

        Console.WriteLine("程序已退出。");
    }
}

  • 关键字Continue

1、当 continue 被执行时,循环将跳过当前的迭代,直接跳到循环的更新步骤(即 for 循环中的第三部分),然后继续下一次迭代。

2、continue 将跳过当前的循环体剩余部分,直接回到条件检查部分(即 while 或 do-while 的条件表达式),然后决定是否继续下一次迭代。

//for 循环中的 continue
using System;

class Program
{
    static void Main()
    {
        for (int i = 0; i < 10; i++)
        {
            if (i % 2 == 0) // 如果 i 是偶数
            {
                continue; // 跳过当前迭代
            }
            Console.WriteLine(i); // 仅打印奇数
        }
    }
}
//while 循环中的 continue
using System;

class Program
{
    static void Main()
    {
        int i = 0;
        while (i < 10)
        {
            i++;
            if (i % 2 == 0) // 如果 i 是偶数
            {
                continue; // 跳过当前迭代
            }
            Console.WriteLine(i); // 仅打印奇数
        }
    }
}

for循环语句:

语法:

for(表达式1;表达式2;表达式3)

{

        循环体;

表达式1:声明循环体变量,记录循环次数

表达式2:循环条件

表达式3:改变循环条件的代码

using System;

class Program
{
    static void Main()
    {
        // 使用 for 循环打印 1 到 10
        for (int i = 1; i <= 10; i++)
        {
            Console.WriteLine("for循环: " + i);
        }
    }
}

 for循环嵌套语句

语法:

// 外部 for 循环
for (initialization; condition; increment)
{
    // 外部循环的代码逻辑
    
    // 嵌套 for 循环
    for (initialization; condition; increment)
    {
        // 内部循环的代码逻辑
    }
}

执行过程:

  1. 外部 for 循环:控制循环的外部结构(例如行),每次迭代外部循环时都会启动内部循环。
  2. 内部 for 循环:在外部循环的每次迭代中执行,用于处理内部结构(例如列),完成外部循环的每一行的处理。
  3. 循环体执行:外部循环每次自增时,内部循环从头开始,直到完成一整行的打印后,外部循环再自增,开始下一行的处理。
  4. 循环结束:当外部循环的条件不再满足时,整个循环结束。                                                                                                                                                                                                                                                                                                                                                                                                                                       
using System;

class Program
{
    static void Main()
    {
        int rows = 5;  // 行数
        int cols = 4;  // 列数

        // 外层循环:用于遍历每一行
        for (int i = 0; i < rows; i++)
        {
            // 内层循环:用于遍历每一列
            for (int j = 0; j < cols; j++)
            {
                // 打印当前行和列的位置
                Console.Write($"{i},{j} ");
            }
            // 每打印完一行后换行
            Console.WriteLine();

            Console.ReadKey();
        }
    }
}

 四、程序调试

使用场景:

  • 写完一段程序后,想看一下这段程序的执行过程
  • 写完程序后,发现程序并没有按照你想象的样子去执行

调试方法:

  1. 逐语句调试(Step Over)F10
    执行当前行的代码,但不会进入函数调用内部。

  2. 逐过程调试(Step Into)F11
    进入当前行代码中的函数调用,并逐步调试函数内部的代码

  3. 断点调试:允许你在代码的特定行暂停程序的执行,从而检查程序状态、变量值和代码行为

调试的快捷方式:

  • 逐语句调试(Step Over)F10
    执行当前行的代码,但不会进入函数调用内部。

  • 逐过程调试(Step Into)F11
    进入当前行代码中的函数调用,并逐步调试函数内部的代码。

  • 逐出调试(Step Out)Shift + F11
    执行当前函数的剩余代码,直到返回到调用该函数的地方。

  • 继续执行(Continue)F5
    继续运行程序,直到遇到下一个断点或程序结束。

  • 暂停调试(Pause)Ctrl + Alt + Break
    暂停程序的执行,使其进入调试状态。

  • 设置/删除断点F9
    在当前行设置或删除断点。

  • 查看调用堆栈Ctrl + Alt + C
    显示调用堆栈窗口,以查看程序执行的调用路径。

调试工具窗口

  1. 调试工具栏

    在 Visual Studio 窗口的顶部工具栏中,通常有调试按钮,如“继续”、“暂停”、“停止”等,帮助你控制调试过程。
  2. 本地变量窗口

    显示当前作用域内的变量及其值。帮助你检查在当前调试状态下的变量值。
  3. 监视窗口

    允许你添加并观察特定变量的值,方便跟踪程序状态变化。
  4. 调用堆栈窗口

    显示当前执行点的调用路径,帮助你了解程序是如何到达当前断点的。 

五、类型转换

1、Convert 类
  • 概念
    Convert 类提供了静态方法来转换基本数据类型和其他类型之间的转换。它可以处理大多数基本类型之间的转换,例如从 string 到 int 或从 double 到 decimal

  • 特点

    • 在转换失败时通常会抛出异常(例如 FormatException)。
    • 对于 null 值,Convert 会将其转换为 default 值(例如,null 转换为 0 或 false)。
// 从 string 转换为 int
string str = "123";
int number = Convert.ToInt32(str); // number 为 123

// 从 double 转换为 string
double d = 123.45;
string strDouble = Convert.ToString(d); // strDouble 为 "123.45"

// 从 null 转换为 int
object obj = null;
int defaultValue = Convert.ToInt32(obj); // defaultValue 为 0
2. Parse 方法
  • 概念
    Parse 是所有基础数据类型(如 intdoubleDateTime 等)的实例方法,用于将 string 类型的数据转换为对应的基础数据类型。它属于 System 命名空间下的每个基本数据类型(例如 Int32.Parse)。

  • 特点

    • 在转换失败时抛出异常(例如 FormatExceptionOverflowException)。
    • 不能处理 null 值,如果 string 为 null 会抛出 ArgumentNullException
// 从 string 转换为 int
string str = "123";
int number = int.Parse(str); // number 为 123

// 从 string 转换为 double
string doubleStr = "123.45";
double d = double.Parse(doubleStr); // d 为 123.45

// 解析失败会抛出异常
try
{
    string invalidStr = "abc";
    int invalidNumber = int.Parse(invalidStr); // 抛出 FormatException
}
catch (FormatException e)
{
    Console.WriteLine("Format exception: " + e.Message);
}
3. TryParse 方法
  • 概念
    TryParse 方法也是用于将 string 转换为基本数据类型的方法,但与 Parse 不同,它不会抛出异常。相反,它返回一个布尔值,指示转换是否成功,并通过参数返回转换后的值。

  • 特点

    • 不抛出异常,转换失败时返回 false,转换成功时返回 true
    • 适用于需要安全转换的场景。
// 从 string 转换为 int
string str = "123";
bool success = int.TryParse(str, out int number);
// success 为 true,number 为 123

// 从 string 转换为 double
string doubleStr = "123.45";
success = double.TryParse(doubleStr, out double d);
// success 为 true,d 为 123.45

// 转换失败的情况
string invalidStr = "abc";
success = int.TryParse(invalidStr, out int result);
// success 为 false,result 为 0

 六、三元表达式

语法:

表达式1?表达式2:表达式3;

  • 表达式1:一个布尔表达式,决定选择哪个结果。
  • 表达式2:当条件为 true 时的结果。
  • 表达式3:当条件为 false 时的结果。

执行过程:

  1. 条件检查:首先评估条件表达式。
  2. 选择结果:如果条件为 true,返回 expression1;如果条件为 false,返回 expression2
using System;

class Program
{
    static void Main()
    {
        int a = 5;
        int b = 10;
        
        // 使用三元表达式判断哪个数更大
        string result = a > b ? "a is greater" : "b is greater";
        
        Console.WriteLine(result); // 输出 "b is greater"
    }
}

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值