public interface ISomeDependency
{
void Calculate( Person person );
}
public class SomeDependency : ISomeDependency
{
void ISomeDependency.Calculate( Person person )
{
person.Age = 30;
}
}
public class Person
{
private static ISomeDependency _someDependency;
public DateTime BirthDate { get; set; }
public int Age { get; set; }
public Person( ISomeDependency someDependency )
{
_someDependency = someDependency;
}
public void CalculateAge()
{
_someDependency.Calculate( this );
}
}
public class Client
{
public Client()
{
Person p = new Person( new SomeDependency() );
p.BirthDate = DateTime.Now.AddYears( -30 );
p.CalculateAge();
}
}如果依赖关系是静态的还是非静态的,那有什么关系呢?一般来说,这有关系吗?
发布于 2014-01-29 17:15:18
如果依赖关系是静态的还是非静态的,那有什么关系呢?一般来说,这有关系吗?
是的--在您的示例中,有一个实例构造函数正在重置静态成员,因此静态成员的值将是最后一个构造函数被赋予的值。
由于没有理由使依赖关系成为静态的(您没有使用它的静态方法/属性),所以它应该是一个实例(非静态)字段。
发布于 2014-01-29 17:30:06
如果_someDependency是静态的,它将被存储在高频堆中,否则它将进入低频堆。
https://stackoverflow.com/questions/21437914
复制相似问题