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 쿼리 중에 객체 생성자가 호출되지 않기 때문에 값은 null이 될 것이기 때문입니다. 그러나 syncRoot
은 어떨까요? db4o 모델 객체에서 필드 이니셜 라이저를 사용하는 것이 안전합니까?
내가 db4o는에 대해 아무것도 몰라하는 데 도움이,하지만 난 syncRoot 항상 초기화됩니다 것을 알고있다. .NET 프레임 워크는 필드 이니셜 라이저가 생성자보다 먼저 실행되도록합니다. – phoog