Cの使用#之&ロック&点検&未チェック语句
.using声明
3つの一般的な使用法:
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は、1つ以上のリソースを取得し、文を実行して、リソースを解放します
using System.IO;
namespace CSharpDemo
{
class Program
{
static void Main(string[] args)
{
using (TextWriter w = File.CreateText("test.txt"))//获取资源
{
w.WriteLine("写入数据");
}
}
}
}
二つの.lock声明
クリティカルセクションをラベル付きステートメントのロックキーブロックは、オブジェクトは、指定されたミューテックスの文が実行され得ることであり、その後、ロックを解除します。
、指定されたオブジェクトをロック文ブロックを実行して、ロックを解除ミューテックスのロック文を取得します。ロックを保持しながら、ロックのスレッドを保持していることを再度取得し、ロックを解除することができます。レリーズロックのロックおよび待機を得るために、他のスレッドを防ぎます。
ロックキーワードは、他のスレッドによって中断されることなく実行するために、コードの完全なブロックを確保するために使用することができます。これは、動作中の指定されたオブジェクト・コード・ブロックを取得するためにミューテックスによって達成されます。
decimal Account;
void ChangeValue(decimal money)
{
lock (this)
{
if (Account > money)
{
Account += money;
Console.WriteLine("操作后账户余额:" + Account);
}
}
}
PS:
1.lock文がロックされなければならないオブジェクト参照型ではなく、値の型
回避デッドロックに2、民間のように、対象物のニーズをロック
三の.checkedをし、未チェックの文
チェック演算および変換整数オーバーフローチェックコンテキストを制御する未確認文。
確認書は、選択したコンテキストで計算されているブロックすべての式が、彼らは非選択のコンテキストで計算されていることをチェックしない文は、機能をチェックし、同じオペレータとの未確認の原因となります。
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);
}
}
}
検証またはオフ出力しません。