我在想:如果我從db4o數據庫加載對象,字段初始值設定項會始終被調用嗎?瞬時字段上的字段初始值設定項
一個例子可能是一個短暫的領域SyncRoot上,用於對象鎖定,因爲線程安全:
public class Test
{
[Transient]
private object syncRoot = new object();
[Transient]
private object syncRoot2;
public Test()
{
this.syncRoot2 = new object();
}
}
db4o的查詢是這樣的:
Test mytestObject = (from Test test in session
select test).First();
我不能使用syncRoot2
因爲在db4o查詢期間,對象構造函數不會被調用,所以該值將爲空。但是syncRoot
呢?在db4o模型對象上使用字段初始值設定項安全嗎?
我不知道關於db4o什麼,但我知道,SyncRoot上總是會被初始化。 .NET框架確保字段初始值設定項將在構造函數之前運行。 – phoog