为什么我可以创建一个类的实例而不将其存储到变量中并且仍然可以使一切工作?

Ine*_*elp 4 c# variables class instance

我有一个非静态类ImplementHeaderButtons,它包含一个名为的非静态公共方法Implement.类和方法的名称并不重要,重要的是它们不是静态的,所以它们需要实例化才能被使用,对吧?

所以我曾经这样做过:

var implementHeaderButtons = new ImplementHeaderButtons();
implementHeaderButtons.Implement(this, headerButtons);
Run Code Online (Sandbox Code Playgroud)

但后来我决定玩一下它(实际上我正在寻找一种方法使它成为一个单行)我得出结论,以下代码也可以正常工作:

new ImplementHeaderButtons().Implement(this, headerButtons);
Run Code Online (Sandbox Code Playgroud)

现在,我不需要一个变量来保存实例,但我的问题是:为什么我可以动态创建一个类的新实例并调用它的方法而不需要存储实例的变量?

如果它没有按预期工作,我不会感到惊讶,但确实如此.

ver*_*ald 9

它们不是静态的,所以它们需要实例化才能被使用,对吧?

是的,但您仍然在实例化该类new ImplementHeaderButtons(),您只是不在任何地方存储对新创建的实例的引用.

您仍然可以像在示例中那样在此实例上调用方法,但之后如果没有引用,您将无法执行任何其他操作.最终,实例将被垃圾收集器清理(前提是您调用的方法不会在某处存储对象的引用).