Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 方法中定义的常量的内存是多少?_C#_.net_Methods - Fatal编程技术网

C# 方法中定义的常量的内存是多少?

C# 方法中定义的常量的内存是多少?,c#,.net,methods,C#,.net,Methods,我可以从内存管理的角度描述在中的方法中定义常量时会发生什么。Net?常量通常在编译时解析并直接插入指令序列。例如: const int A = 10; int b; int i = A + b; 将有效地汇编为: int i = 10 + b; 对于字符串,它们被插入堆中。当编译器在C#源代码中遇到常量标识符时,它会将文本值直接替换到中间语言(IL)中由于在运行时没有与常量关联的变量地址而生成的代码。常量字段不能通过引用传递,也不能在表达式中显示为l值。要了解更多信息,您可以查看Msdn。

我可以从内存管理的角度描述在中的方法中定义常量时会发生什么。Net?

常量通常在编译时解析并直接插入指令序列。例如:

const int A = 10;
int b;

int i = A + b;
将有效地汇编为:

int i = 10 + b;

对于字符串,它们被插入堆中。

当编译器在C#源代码中遇到常量标识符时,它会将文本值直接替换到中间语言(IL)中由于在运行时没有与常量关联的变量地址而生成的代码。常量字段不能通过引用传递,也不能在表达式中显示为l值。要了解更多信息,您可以查看Msdn。

在运行时,它们存储在堆内存中,因为它们在执行过程中一直存在,不会被垃圾收集。