【问题标题】:Reference Type and Value Type in Memory内存中的引用类型和值类型
【发布时间】:2015-04-29 15:07:13
【问题描述】:

如果我有一个类Person,并且这个类的数据成员为FirstNameLastName

 public Class Person
 {
     public string firstName {get; set;}
     public string lastName   {get; set;}

 }

Person 是引用类型,但firstNamelastName 是值类型。那么这将如何存储呢? Person 类会存储在堆上,firstNamelastName 会存储在堆栈上吗?有人可以帮我理解这是如何工作的吗?

【问题讨论】:

  • 全部在堆上。对于此类问题,Google 将是比 SO 更好的资源。
  • Here 是关于值类型主题的一些不错的读物。我觉得最重要的一点是 C# 努力让它变得无关紧要——你不必关心堆栈与堆。
  • 另外,stringreference type
  • 顺便说一句,字符串是不可变的引用类型。这个词非常重要!!!不可变!!!

标签: c# oop


【解决方案1】:

在这种情况下,所有内容都将存储在堆中,因为所有内容都包含在引用类型中。

还要注意,string 无论如何都是引用类型(尽管 MS 尽一切努力使它看起来像值类型)。

【讨论】:

  • 如果 Person 类是在 main(Progam.cs) 中创建的,那么这个类的引用将被添加到 Sack 而不是堆中。
猜你喜欢
  • 2012-08-06
  • 2010-11-10
  • 2014-01-02
  • 1970-01-01
  • 2012-07-20
  • 2015-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多