참조 기능으로 C# 7.0을 도입 한 이래로이 기능은 힙에있는 변수에만이 참조를 저장하도록 컴파일러에서 다시 배선해야한다는 것을 이해했기 때문에 스택에있는 변수에 대한 참조를 반환했거나 새 ref 선언으로 변수가 항상 힙에 저장되는지 확인합니까?C# 7.0에서 참조로 반환되는 값이 스택이나 힙에 저장됩니까?
ref int x = ref DoSomething(data);
// Is the value of x now on the stack or the heap? Or is x stored on the stack as a reference and the value on the heap?
나의 이해는 this article을 기반으로합니다 : 마지막으로
에서, CLR은 "REF 반환 형식을"허용 않습니다; 당신은 이론적으로 정수형 변수 에 대한 참조를 반환하는 "ref int M() {...}"메서드를 가질 수 있습니다. 이상한 이유로 우리가 을 C#에서 컴파일러와 검증자를 고쳐야 만 이 힙에있는 것으로 알려진 변수에 대한 참조를 반환하는 것이 가능하다는 것을 확인해야한다고 생각한 경우 , 또는 스택 아래에 "lower lower"로 알려지기를 원합니다.
로컬 변수 인 경우 스택에있을 것입니다. –
@EhsanSajjad 로컬 변수 인 경우 'ref'를 반환하는 메서드에서 반환 할 수 없습니다. – Servy
@Servy의 의미를 구체적으로 설명해 주시겠습니까? –