编译器是否重用在方法内声明的const变量

时间:2018-01-24 21:56:12

标签: c#

class foo
{
    string bar()
    {
        const string c = "dead beef";
        return c;
    }

    void Test()
    {
        string a = bar();
        string b = bar();
    }
}

ab个不同的实例,还是指向相同的内存地址? (= =比较会返回true,无论它们是否是同一个实例,所以我无法对它进行真正的测试)

1 个答案:

答案 0 :(得分:0)

不,但对大多数情况来说并不重要。

对于结构体(intfloatDateTime等),该值将放在堆栈上,因此内存重用不相关。

对于字符串,const不执行任何特殊操作,但字符串常量本身是实例化的,因此所有匹配的常量字符串值将指向内存中的相同实例。