Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.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#_Garbage Collection_Static Methods - Fatal编程技术网

C#静态方法中的变量是在开始时初始化的还是在第一次调用该方法时初始化的?

C#静态方法中的变量是在开始时初始化的还是在第一次调用该方法时初始化的?,c#,garbage-collection,static-methods,C#,Garbage Collection,Static Methods,在C#3.5中的一个类中,我有一些带有一些变量的静态方法。即使我没有初始化类,静态方法也会首先初始化 那么静态方法中的变量是否也在开始时初始化,而不是垃圾收集 我想知道——即使我没有调用该方法,或者我调用了该方法一次并且该方法退出,内存是否会分配给这些方法变量?或者每次调用方法并退出时—方法中的变量都会被垃圾收集?静态方法变量是在调用方法时创建的,当方法执行结束并准备进行垃圾收集时,静态方法变量将超出范围 静态方法变量是在调用方法时创建的,当方法执行结束并准备进行垃圾收集时,该变量将超出范围 首

在C#3.5中的一个类中,我有一些带有一些变量的静态方法。即使我没有初始化类,静态方法也会首先初始化

那么静态方法中的变量是否也在开始时初始化,而不是垃圾收集


我想知道——即使我没有调用该方法,或者我调用了该方法一次并且该方法退出,内存是否会分配给这些方法变量?或者每次调用方法并退出时—方法中的变量都会被垃圾收集?

静态方法变量是在调用方法时创建的,当方法执行结束并准备进行垃圾收集时,静态方法变量将超出范围

静态方法变量是在调用方法时创建的,当方法执行结束并准备进行垃圾收集时,该变量将超出范围

首先初始化静态方法

不,静态方法本身并没有“初始化”;它们(在标准实现中)在第一次使用时是JIT的,但这与内存分配无关

那么静态方法中的变量是否也在开始时初始化,而不是垃圾收集

方法变量是每次调用的(堆栈上)——不是全局的;堆栈空间是在您输入方法时指定的。如果您有引用类型变量,那么当方法退出时,它们将超出范围(假设这些变量没有“捕获”到比方法寿命更长的委托或lambda表达式中)

只有对象被垃圾收集;不是变量。引用类型变量只包含对对象的引用

首先初始化静态方法

不,静态方法本身并没有“初始化”;它们(在标准实现中)在第一次使用时是JIT的,但这与内存分配无关

那么静态方法中的变量是否也在开始时初始化,而不是垃圾收集

方法变量是每次调用的(堆栈上)——不是全局的;堆栈空间是在您输入方法时指定的。如果您有引用类型变量,那么当方法退出时,它们将超出范围(假设这些变量没有“捕获”到比方法寿命更长的委托或lambda表达式中)


只有对象被垃圾收集;不是变量。引用类型变量只包含对对象的引用。

这里说“disposed”是非常误导的,因为这有一个非常具体的含义,在这里不适用是的,我更改了答案,实际上我想说它们准备好被垃圾回收这里说“disposed”是非常误导的,因为这有一个非常具体的含义,在这里不适用是的,我改变了答案,实际上我想说他们已经准备好被垃圾收集了。我同意马克·格雷威尔的观点,因为我是该网站的新手,所以不能投票支持他的帖子。@Imran欢迎来到该网站;请注意:我们试图鼓励人们只将答案作为“答案”发布;我已将你的回答转换为评论。你应该能够很快地添加评论(有一个小的代表限制,只是为了防止滥用)。我同意Marc Gravell,因为我是该网站的新手,所以不能投票支持他的帖子。@Imran欢迎访问该网站;请注意:我们试图鼓励人们只将答案作为“答案”发布;我已将你的回答转换为评论。你应该能够很快地添加评论(有一个小的代表限制,只是为了防止滥用),谢谢Marc。我明白了。谢谢,马克。我明白了。当做