Jer*_*vel 8 c# enums memory-management tostring
我一直在研究调用.ToString()枚举成员的效果- 更具体地说是它是否创建了一个新的字符串对象.
请考虑以下枚举定义:
enum MyEnum
{
MyValue = 0,
MyOtherValue = 1
}
Run Code Online (Sandbox Code Playgroud)
如果我在断点上执行以下代码x,y并z在每个点进行堆转储
static void Main(string[] args)
{
Console.WriteLine(typeof(MyEnum));
var x = MyEnum.MyValue.ToString(); // Breakpoint 1
var y = MyEnum.MyValue.ToString(); // Breakpoint 2
var z = MyEnum.MyOtherValue.ToString(); // Breakpoint 3
Console.WriteLine(x, y, z);
}
Run Code Online (Sandbox Code Playgroud)
我可以看到以下结果:
| Stage | # string objects |
|---------|------------------|
| Initial | 463 |
| BP 1 | 465 |
| BP 2 | 465 |
| BP 3 | 466 |
Run Code Online (Sandbox Code Playgroud)
我查看了enum.cs但找不到导致(缺少?)分配的原因.
最重要的问题是为什么它Enum.ToString()似乎实际上代表它所代表的成员.代码的哪一部分导致实习?
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |