实例方法和字段的副本数量?

时间:2014-07-10 17:32:35

标签: c# .net object memory

只是好奇。

如果我创建了特定类的2个对象,那么实例方法和实例变量的2个实例存在于该特定类的内存中?

编辑:我尝试使用static,当然,只有一个成员实例存在但不确定实例变量。

1 个答案:

答案 0 :(得分:2)

  

如果我创建了一个特定类的2个对象,那么实例方法的两个实例和实例变量是否存在于该特定类的内存中?

实例字段 - 是的。实例方法(包括属性访问器),没有。代码(实例和静态)在所有实例之间共享。

请注意,静态类将为每个使用的泛型参数创建一个额外的类型,并且每个类型将共享一组静态变量,例如:

// for example only, not intended to be a perfect singleton implementation
public class Singleton<T> where t : new()
{
    private static T _Instance;

    public T Instance()
    {
        return _Instance ?? (_Instance = new T());
    }
}

Singleton<Class1>Singleton<Class2>将在内存中为_Instance分别包含不同的对象。