6
爲什麼下面甚至合法?註冊CancellationToken.None安全嗎?
CancellationToken.None.Register(delegate { });
爲什麼,例如,Register
在這裏不會引發異常?是否因爲上述數量爲NOP?
背景:的原因的提問是瞭解是否接受CancellationToken
需求的方法中對防守時CancellationToken.None
登記涉及編碼。
我意識到CancellationToken是一個值類型,因此始終有一個值,其中CancellationToken.None等於默認構造的值。但是,您認爲註冊是否爲空標記本身的NOP,因此不需要防禦? – 2011-03-30 17:13:38
@Atif:我剛剛經過並檢查了實際發生的事情 - 這是安全的,不需要防禦。 (我編輯了我的答案以顯示)在Register方法中有一個檢查只返回一個新的註冊,並且如果令牌無法取消,則完全忽略該委託,CT.None就是這種情況。 – 2011-03-30 17:18:28
有趣。我沒有找到你檢查你提到:),因此我的問題。 – 2011-03-30 17:22:44