C# 一旦我们声明了变量,它将在哪个内存中存储堆还是堆栈?

C# 一旦我们声明了变量,它将在哪个内存中存储堆还是堆栈?,c#,C#,我听说变量存储在堆栈中,对象存储在堆中 如果我将变量声明为var password=“abc”,那么这个密码将存储在哪里(堆/堆栈)在一般情况下,您不必担心对象存储在哪里,但是,每当这个问题在SO中出现时,注释和答案突然出现,传播了一种神话般的错误信念,即值类型存储在堆栈中,引用类型存储在堆中。不,不,不 这样做更好:引用类型放在堆上,短期值类型放在堆栈上。长期存在的值类型(字段、闭包中捕获的变量)在堆上。存储机制在很大程度上与变量的预期生存期有关,而不是与变量类型的性质有关 如果你真的想知道细

我听说变量存储在堆栈中,对象存储在堆中


如果我将变量声明为
var password=“abc”
,那么这个密码将存储在哪里(堆/堆栈)

在一般情况下,您不必担心对象存储在哪里,但是,每当这个问题在SO中出现时,注释和答案突然出现,传播了一种神话般的错误信念,即值类型存储在堆栈中,引用类型存储在堆中。不,不,不

这样做更好:引用类型放在堆上,短期值类型放在堆栈上。长期存在的值类型(字段、闭包中捕获的变量)在堆上。存储机制在很大程度上与变量的预期生存期有关,而不是与变量类型的性质有关


如果你真的想知道细节,请阅读。

事实上这取决于。。。而且基本上是无关紧要的。阅读对于密码,使用
SecureString
作为存储。@SergeyBerezovskiy这绝对不是真的;值类型进入堆栈,引用类型进入堆的概念是绝对错误的。@SergeyBerezovskiy一个长寿命的值类型变量(类字段或闭包中捕获的局部变量)进入堆,它们绝对不会存储在堆栈中。@。您是否有一些链接表明变量本身存储在堆中?感谢您澄清@SergeyBerezovski!