C# 之 using & lock & checked & unchecked語句

C# 之 using & lock & checked & unchecked 語句

一.using語句

三種常見的用法:

1. 引入命名空間
2.重命名

using System; //引入命名空間
using myMatht = System.Math; //重命名

namespace CSharpDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = -1;
            //使用
            Console.WriteLine(myMatht.Abs(a));
        }
    }
}

3.using語句獲取一個或多個資源,執行一個語句,然後釋放該資源

using System.IO;

namespace CSharpDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            using (TextWriter w = File.CreateText("test.txt"))//獲取資源
            {               
                w.WriteLine("寫入數據");
            }
        }
    }
}


二.lock語句

lock 關鍵字將語句塊標記爲臨界區,方法是獲取給定對象的互斥鎖,執行語句,然後釋放該鎖。

lock 語句獲取給定對象的互斥 lock,執行語句塊,然後釋放 lock。 持有 lock 時,持有 lock 的線程可以再次獲取並釋放 lock。 阻止任何其他線程獲取 lock 並等待釋放 lock。

lock 關鍵字可以用來確保代碼塊完成運行,而不會被其他線程中斷。這是通過在代碼塊運行期間爲給定對象獲取互斥鎖來實現的。

		decimal Account;
        void ChangeValue(decimal money)
        {
            lock (this)
            {
                if (Account > money)
                {
                    Account += money;
                    Console.WriteLine("操作後賬戶餘額:" + Account);
                }
            }
        }

PS:
1.lock語句中鎖定的必須是引用類型的對象,不能是值類型

2.爲了避免死鎖,lock的對象需要是private對象


三.checked語句和unchecked語句

checked 語句和unchecked 語句用於控制整型算術運算和轉換的溢出檢查上下文。

checked 語句使塊中的所有表達式都在一個選中的上下文中進行計算,而unchecked 語句使它們在一個未選中的上下文中進行計算,功能與checked和unchecked運算符相同。

 	class Program
    {      
        static void Main(string[] args)
        {           
 			int i = int.MaxValue;
            checked
            {
                Console.WriteLine(i + 1);
            }
         }
     }

運行會拋異常
校驗

	class Program
    {      
        static void Main(string[] args)
        {           
 			int i = int.MaxValue;
 			Console.WriteLine(i + 1);
            unchecked
            {
                Console.WriteLine(i + 1);
            }
         }
     }

不校驗或者是unchecked的輸出結果:
測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章