C# yield checked,unchecked lock语句(C#学习笔记04)

C# 小时候可胖了 22℃ 0评论

1
特殊语句

1
yield语句

  1. 1
    yield用于终止迭代
  2. 1
    只能使用在返回类型必须为 IEnumerable、IEnumerable<T>、IEnumerator 或 IEnumerator<T>的方法、运算符、get访问器中

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
<code>using System;
namespace statement
{
    class Program
    {
        static System.Collections.Generic.IEnumerable&lt;int&gt; Range(int from, int to)      //yield用法,
        {
            for (int i = from; i &lt; 5; i++)
            {
                yield return i;
            }
            yield break;

            for (int i = 5; i &lt; to; i++)          //在vs2019提示无法访问的语句
            {
                yield return i;
            }
        }
        static void YieldStatement()
        {
            foreach (int i in Range(-10, 10))
            {
                Console.WriteLine(i);
            }
        }
        static void Main(string[] args)
        {
            YieldStatement();
        }
    }
}

运行结果:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-10
-9
-8
-7
-6
-5
-4
-3
-2
-1
0
1
2
3
4
C:Program Filesdotnetdotnet.exe (进程 6072)已退出,返回代码为: 0。
若要在调试停止时自动关闭控制台,请启用“工具”-&gt;“选项”-&gt;“调试”-&gt;“调试停止时自动关闭控制台”。
按任意键关闭此窗口...

checked?和?unchecked?语句

用于控制整型类型算术运算和转换的溢出检查上下文


1
2
3
4
5
6
7
8
9
10
11
12
static void CheckedUnchecked(string[] args)
{
    int x = int.MaxValue;
    unchecked
    {
        Console.WriteLine(x + 1);  // 溢出,显示错误数据
    }
    checked
    {
        Console.WriteLine(x + 1);  // 程序调试终止报错
    }    
}

lock语句

它的作用是锁定某一代码块,让同一时间只有一个线程访问该代码块


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Account
{
    decimal balance;
    private readonly object sync = new object();
    public void Withdraw(decimal amount)
    {
        lock (sync)                           //同一时间只能有一个线程使用
        {
            if (amount &gt; balance)
            {
                throw new Exception(
                    "Insufficient funds");
            }
            balance -= amount;
        }
    }
}

转载请注明:九层楼 » C# yield checked,unchecked lock语句(C#学习笔记04)

喜欢 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址