次の2つの構文糖衣に感謝します。
lock(obj)
{
//Code
}
same as:
Monitor.Enter(obj)
try
{
//Code
}
finally
{
Monitor.Exit(obj)
}
と
using(var adapt = new adapter()){
//Code2
}
same as:
var adapt= new adapter()
try{
//Code2
}
finally{
adapt.Dispose()
}
明らかに、それぞれの場合の最初の例はより読みやすいです。C#言語またはIDEのいずれかで、この種のことを自分で定義する方法はありますか?私が尋ねる理由は、これから恩恵を受ける(長い種類の)多くの同様の使用法があるということです。ReaderWriterLockSlimを使用している場合は、非常によく似たものが必要です。
編集1:
例を提供するように求められたので、試してみます。
myclass
{
ReaderWriterLockSlim rwl = new ReaderWriterLockSlim();
void MyConcurrentMethod()
{
rwl.EnterReadLock();
try{
//Code to do in the lock, often just one line, but now its turned into 8!
}
finally
{
rwl.ExitReadLock();
}
}
}
//I'd rather have:
void MyConcurrentMethod()
{
rwl.EnterReadLock()
{
//Code block. Or even simpler, no brackets like one-line ifs and usings
}
}
もちろん、TryEnterReadLocksの使用方法や、リターンを伴うこれらの種類のものについて、いくつかの考えを与える必要があります。しかし、私はあなたが何かを考えることができると確信しています。