特殊語句 yield語句 運行結果: checked 和 unchecked 語句 用於控制整型類型算術運算和轉換的溢出檢查上下文 lock語句 它的作用是鎖定某一代碼塊,讓同一時間只有一個線程訪問該代碼塊 ...
特殊語句
yield語句
yield用於終止迭代
只能使用在返回類型必須為 IEnumerable、IEnumerable<T>、IEnumerator 或 IEnumerator<T>的方法、運算符、get訪問器中
using System;
namespace statement
{
class Program
{
static System.Collections.Generic.IEnumerable<int> Range(int from, int to) //yield用法,
{
for (int i = from; i < 5; i++)
{
yield return i;
}
yield break;
for (int i = 5; i < 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();
}
}
}
運行結果:
-10
-9
-8
-7
-6
-5
-4
-3
-2
-1
0
1
2
3
4
C:\Program Files\dotnet\dotnet.exe (進程 6072)已退出,返回代碼為: 0。
若要在調試停止時自動關閉控制台,請啟用“工具”->“選項”->“調試”->“調試停止時自動關閉控制台”。
按任意鍵關閉此視窗...
checked 和 unchecked 語句
用於控制整型類型算術運算和轉換的溢出檢查上下文
static void CheckedUnchecked(string[] args)
{
int x = int.MaxValue;
unchecked
{
Console.WriteLine(x + 1); // 溢出,顯示錯誤數據
}
checked
{
Console.WriteLine(x + 1); // 程式調試終止報錯
}
}
lock語句
它的作用是鎖定某一代碼塊,讓同一時間只有一個線程訪問該代碼塊
class Account
{
decimal balance;
private readonly object sync = new object();
public void Withdraw(decimal amount)
{
lock (sync) //同一時間只能有一個線程使用
{
if (amount > balance)
{
throw new Exception(
"Insufficient funds");
}
balance -= amount;
}
}
}