即使所有常识都说不,我仍然会问这个问题只是为了得到第二个意见并确定。
如果我有这样的类层次结构:
public class IntermediateObjectContext : System.Data.Objects.ObjectContext
{
public static Action<string> PrintHello { get; set; }
}
public class MyDatabaseContext : IntermediateObjectContext
{
public ObjectSet<Foo> Foos
{
get { // ... }
}
}
然后从与Entity Framework对象无关的第三个,如果我访问IntermediateObjectContext类的静态成员,在这种情况下,如果我订阅该类的委托,是否会以某种方式实例化一个新的ObjectContext?
class SomeClass
{
public void SomeMethod()
{
IntermediateObjectContext.PrintHello += SayHello;
}
public void SayHello(string s)
{
Debug.Print(s);
}
}
所有理由都说不,常识说它不会,但我只想确定。我正在尝试追踪记忆hogger对象。
如果
会发生什么如果我有SomeClass类型的静态集合,那么内存情况会发生什么:
public class SomeClassCollection
{
private static Collection<SomeClass> _col =
new Collection<SomeClass>();
public void Add(SomeClass c) { _col.Add(c); }
public void Remove(SomeClass c) { _col.Remove(c); }
}
然后一些代码将SomeClass
个实例添加到SomeClassCollection中,如下所示:
public SomeClassCollectionConfig
{
public static RegisterSomeClasses()
{
SomeClassCollection.Add(new SomeClass());
SomeClassCollection.Add(new DerivesClassOfSomeClass());
}
}
答案 0 :(得分:3)
(1)不,它不会实例化一个对象。
(2)如果出现以下情况:
在第一次访问col
的任何成员时,它将分配空集合SomeClassCollection
。
从代码中,这就是它所能做的一切。您未在所提供的代码中的任何位置使用_col
。