您将欣赏以下两种语法糖:
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 以及那些有回报的东西。但我相信你能想到一些事情。