在布尔值上调用 ToString() 是否总是分配内存
Does a call to ToString() on a boolean always allocate memory
考虑以下代码:
private bool flag;
private void Test()
{
Console.WriteLine(flag.ToString());
}
假设 Test() 被多次调用,它是否每次都分配内存,或者 C#(编译器或运行时)中是否有某种机制可以对此进行优化?
我听说过“String interning”,但我不确定它是针对这种情况执行的,还是仅在涉及字符串常量时才执行。
不,您可以在 sources 中自己看到,ToString()
方法返回 readonly static
个字段的值。
考虑以下代码:
private bool flag;
private void Test()
{
Console.WriteLine(flag.ToString());
}
假设 Test() 被多次调用,它是否每次都分配内存,或者 C#(编译器或运行时)中是否有某种机制可以对此进行优化?
我听说过“String interning”,但我不确定它是针对这种情况执行的,还是仅在涉及字符串常量时才执行。
不,您可以在 sources 中自己看到,ToString()
方法返回 readonly static
个字段的值。