Bạn sẽ đánh giá cao hai đường cú pháp sau:Tính năng này có tồn tại không? Xác định dấu ngoặc nhọn của riêng tôi trong C#
lock(obj)
{
//Code
}
same as:
Monitor.Enter(obj)
try
{
//Code
}
finally
{
Monitor.Exit(obj)
}
và
using(var adapt = new adapter()){
//Code2
}
same as:
var adapt= new adapter()
try{
//Code2
}
finally{
adapt.Dispose()
}
Rõ ràng ví dụ đầu tiên trong mỗi trường hợp là dễ đọc hơn. Có cách nào để xác định loại điều này bản thân mình, hoặc trong ngôn ngữ C#, hoặc trong IDE? Lý do tôi hỏi là có rất nhiều cách sử dụng tương tự (của loại dài) có thể được hưởng lợi từ điều này, ví dụ như. nếu bạn đang sử dụng ReaderWriterLockSlim, bạn muốn một cái gì đó khá giống nhau.
EDIT 1:
Tôi đã yêu cầu cung cấp một ví dụ, vì vậy tôi sẽ cung cấp cho nó một đi:
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
}
}
Tất nhiên bạn sẽ phải đưa ra một số suy nghĩ như làm thế nào để sử dụng TryEnterReadLocks và những thứ như vậy với trả về. Nhưng tôi chắc chắn bạn có thể nghĩ ra điều gì đó.
Bạn có thể mô phỏng một tải trọng của vật bằng cách sử dụng các nhà xây dựng là "pre-block" và Dispose() là "bài-block " chức năng. – Dykam
Bạn có thể làm rõ ý bạn là gì? – Carlos
ở đó bạn đi: http://stackoverflow.com/questions/2882983/does-this-feature-exist-defining-my-own-curly-brackets-in-c/2932023#2932023 – Dykam