Đây là điều tôi chưa bao giờ hiểu. Nó gần như có vẻ giống như một hack để tạo ra một đối tượng giả mà được lock
ed, giống như ví dụTại sao chúng ta cần khóa và đối tượng trong C#?
class Account
{
decimal balance;
private Object thisLock = new Object();
public void Withdraw(decimal amount)
{
lock (thisLock)
{
if (amount > balance)
{
throw new Exception("Insufficient funds");
}
balance -= amount;
}
}
}
từ https://msdn.microsoft.com/en-us/library/c5kehkcz.aspx.
Tại sao có thể không phải là nhà thiết kế ngôn ngữ làm cho nó để
class Account
{
decimal balance;
public void Withdraw(decimal amount)
{
lock
{
if (amount > balance)
{
throw new Exception("Insufficient funds");
}
balance -= amount;
}
}
}
sẽ tương đương?
@Sayse Không sao cả, nếu không thì sẽ không ai biết cách sử dụng 'khóa' ngay từ đầu. Những lý do tại sao cần câu lệnh 'lock' cần được thông qua một tham số khá rõ ràng, và câu hỏi là rất hợp lệ nếu tác giả không hiểu những lý do đó. – rucamzu
@rucamzu - Tôi nghĩ rằng tôi đã đọc sai câu hỏi – Sayse