定義我自己花括號中你會體會到以下兩個語法糖:此功能是否存在?在C#
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和這些類型的東西與返回。但我相信你可以想到一些事情。
您可以通過使用構造稱爲「前塊」和Dispose()方法爲「後塊模仿的東西負載「功能。 – Dykam 2010-05-21 14:48:24
你能澄清你的意思嗎? – Carlos 2010-05-21 15:04:04
你去了:http://stackoverflow.com/questions/2882983/does-this-feature-exist-defining-my-own-curly-brackets-in-c/2932023#2932023 – Dykam 2010-05-28 19:50:13