C#官方文档学习笔记(1)

C#中 yield 语句理解

在 C# 中 使用 协程 IEnumerable 才会用到yield 返回,在协程中可以存在多个返回值,但必须要有一个返回值。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
 static void Main(string[] args)
        {
            
            /*
             下面是实现的是yield return 返回类型
            
          
            foreach (int i in Range(-10,10))
            {
                WriteLine(i);
            }
             * */


            ReadLine();
        }
static void CheckedUnchecked(string [] args)
     {
        int x = int.MaxValue;
        unchecked
        {

        WriteLine(x + 1);

       }
        checked
        {
            WriteLine(x + 1);
        }
      }

以上就是协程中yield return 的方法,可以拥有多个返回值。

checked 和 unchecked 的方法

checked 会在程序运行到 其所包括的代码块时会检查代码块中是否会存在算术运算和转换溢出,如果存在溢出情况则会停止当前程序,来报出异常。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            CheckedUnchecked(args);
            ReadLine();
        }

        static void CheckedUnchecked(string[] args)
        {
            int x = int.MaxValue;
            unchecked
            {

                WriteLine(x + 1);

            }
            checked
            {
                WriteLine(x + 1);
            }
        }
    }
}
           

通过运行上方代码可以发现运行到unchecked,虽然 i 的值已经溢出但是代码任然在运行,而运行到checked代码块,则程序会停下提示 i 的值已经溢出。

try -catch -finally语句

try -catch -finally 用来抛出异常终止程序,一般是增加了程序的健壮性,用系统中的异常类,来防止用户的一些非法输入导致程序崩溃的问题,
一般来说 try 捕获到异常时程序运行到catch 代码块后,就会停止运行,catch 以后的所有代码都不会运行,但是如果我希望在这个异常被抛出后系统给出一些提示信息的话,要么在catch 中输出,要么就在finally 中抛出。
finally 的作用就是如果程序捕获到异常,在运行完catch 后还需要去执行 finally代码块中的程序。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
           try
            {
                if(args.Length != 2)
                {
                    throw new InvalidOperationException("Two number required");
                }
                double x = double.Parse(args[0]);
                double y = double.Parse(args[1]);
                WriteLine(Divide(x, y));
            }
            catch (InvalidOperationException e)
            {
                WriteLine(e.Message);
            }
            finally
            {
                WriteLine("Good bye!");
            }
            ReadLine();
        }

        static double Divide(double x, double y)
        {
            if (y == 0)
                throw new DivideByZeroException();
            return x / y;
        }

      
    }
}
 

由于 args[ ] 我们没有给值,所有默认为0 ,那么程序在 try 语句后 throw出异常信息,然后就会运行 finally 的代码块。
所以程序最后会输出 Good bye。

lock 和 using 语句

lock 语句用于获取给定对象的相互排斥锁定,执行语句,然后解除锁定。
using 语句用于获取资源,执行语句,然后释放资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值