【问题标题】:how to call destractor for static class in c#?如何在 C# 中调用静态类的析构函数?
【发布时间】:2014-02-27 06:38:44
【问题描述】:

嗨,我是 OOPS 的初学者,请帮助我理解这一点

如何调用静态类的贬损者?否则如何为静态类、方法和对象释放内存?

【问题讨论】:

  • 到目前为止您尝试了什么,请发布您的一些代码,以便我们为您提供帮助。

标签: static-constructor explicit-destructor-call


【解决方案1】:

C# 是一种托管语言。这意味着 .NET 将在不再使用时使用所谓的垃圾收集器自动释放内存。这与 C++ 不同,例如,您需要显式删除对象才能释放它。在 C++ 中,当您对对象调用 delete 时,将调用对象的析构函数。在 C# 中,每当 .NET 垃圾收集器决定销毁对象时,都会调用析构函数(最终,一旦您没有对它的引用并且它超出范围并且 .NET 决定回收内存)

静态类可以在类内部分配静态变量。静态类没有被调用的析构函数。所以你问题的那一部分不适用。

【讨论】:

    【解决方案2】:

    要为对象实例分配内存,你应该使用构造函数

      Object o = new Object();
      MyClass m = new MyClass(); 
    

    *静态字段*s由.Net分配;所以只需声明它们:

      public class MyClass {
        public static Object o = new Object();
        public static int i = 123;
      }  
    

    方法、属性是C语言中的一种函数,所以根本不能分配

    静态类密封抽象不能被创建,所以不能被分配

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-07
      • 2022-07-01
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 2015-08-22
      相关资源
      最近更新 更多