On 3/5/21 12:24 PM, Jack wrote:

Are there some kind of replacement or I have to make my own finalize-like method, once I determine somewhat the application no longer need those resources?

destroy() executes the destructor.

To my surprise, even though 'c' is not null below, the destructor is not executed multiple times.

import std.stdio;

class C {
  string fileName;

  this(string fileName) {
    writeln("constructing");
    this.fileName = fileName;
    writeln("creating file");
  }

  ~this() {
    writeln("destructing");
    if (fileName) {
      writeln("removing the file");

    } else {
      writeln("NOT removing the file");
    }
  }
}

void main() {
  auto c = new C("some imaginary file name");

  // Executes the destructor
  destroy(c);

  // This does not do anything
  destroy(c);

  // Neither does this
  import core.memory;
  GC.collect();
}

Ali

Reply via email to