.NET stack and heap, what goes where when I declare a string?

后端 未结 3 1543
北荒
北荒 2020-12-10 16:58

If I execute this line I create a string which is a reference.

string mystring = \"Hello World\"

Is variable mystring in the

3条回答
  •  借酒劲吻你
    2020-12-10 17:11

    Official Answer: it's an implementation detail and you don't need to know.

    It is of course knowable for a specific (current) version of the framework:

    1) if this is inside a method, then mystring is a reference variable, usually on the stack. But when it is captured, or when the method is async, or ... it is moved to the heap.

    2) if this is inside a class, then each instance will contain a mystring reference as a field, stored on the heap.

    In both cases there is an anonymous string object on the heap containing "Hello World"

提交回复
热议问题