首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >私有静态依赖与私有依赖

私有静态依赖与私有依赖
EN

Stack Overflow用户
提问于 2014-01-29 17:10:38
回答 2查看 66关注 0票数 3
代码语言:javascript
复制
  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();
    }
  }

如果依赖关系是静态的还是非静态的,那有什么关系呢?一般来说,这有关系吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-29 17:15:18

如果依赖关系是静态的还是非静态的,那有什么关系呢?一般来说,这有关系吗?

是的--在您的示例中,有一个实例构造函数正在重置静态成员,因此静态成员的值将是最后一个构造函数被赋予的值。

由于没有理由使依赖关系成为静态的(您没有使用它的静态方法/属性),所以它应该是一个实例(非静态)字段。

票数 1
EN

Stack Overflow用户

发布于 2014-01-29 17:30:06

如果_someDependency是静态的,它将被存储在高频堆中,否则它将进入低频堆。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21437914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档