![]() |
1
3
静态字段和构造函数初始化之间的区别有点复杂,因为框架版本之间会有所不同。乔恩写了一篇关于这个主题的深度博客文章,你应该看看。
静态字段像普通值一样被垃圾回收。也就是说,当无法再访问它们时,它们会被收集起来。这种情况在许多情况下都可能发生,其中最常见的情况是
处理静态成员是完全合法的,但是如果您将已释放的值保留在字段中,然后应用程序的其余部分可以访问它,则会导致一些问题(应用程序可能不会意识到它已被释放) |
![]() |
2
1
静态字段通常不会被垃圾回收,因为它不会超出范围。但是,如果要将静态字段设置为null,则它用来引用的实例将成为垃圾回收的候选实例。您甚至可以在清空静态字段之前调用Dispose。 |
![]() |
3
1
静态字段和实例(非静态)字段有非常不同的含义,在决定使用哪个字段之前,理解它们是很重要的。 静态变量或方法属于类,而不属于该类的特定实例。每个类都有一个副本(不管创建多少个实例),并且可以在没有类实例的情况下访问它。例如,
实例变量需要类的实例
而且,没有一个
通常,当值影响对象的单个实例时,使用实例变量/方法,而不影响时,则使用静态变量和方法。 |
![]() |
4
1
您也将其标记为Java,因此有两个Java透视图。 1) 一。在Java中没有静态构造函数的概念,相反,您可以将代码块定义为静态的,它们在类准备使用时运行—毕竟,静态字段由类的所有实例共享,因此在我们有任何工作实例之前不需要初始化。
你不是在垃圾收集x和y,而是在垃圾收集OneThing和其他实例。当没有对这些对象的引用时,就会发生这种情况。 对于y引用的另一个实例,当MyClass实例本身被垃圾回收时,就会发生这种情况。但是只要JVM知道MyClass,x引用的OneThing仍然会被引用。但是,课程本身 被垃圾收集,因此最终有可能移除x引用并对OneThing对象进行垃圾收集。 |
![]() |
5
0
|
![]() |
6
0
关于#1,在Java中很明显,您不需要创建类的实例来使用静态成员。它将阻止一个不打算被实例化的类(例如。
另外,你会与最常见的单例模式产生矛盾:
|
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |