I have a non-static class called ImplementHeaderButtons
which contains a non-static public method called Implement
. The name of the class and method are not important, what's important is that they are not static, so they need to be instantiated in order to be used, right?
So I used to do this:
var implementHeaderButtons = new ImplementHeaderButtons();
implementHeaderButtons.Implement(this, headerButtons);
But then I decided to play around a bit with it (actually I was looking for a way to make it a one-liner) and I concluded that the following code works just as well:
new ImplementHeaderButtons().Implement(this, headerButtons);
Now, I do not need a variable to hold the instance, but my question is: how come I can create a new instance of a class on the fly and call a method of it without having a variable to store the instance?
I wouldn't be surprised if it didn't work as intended, but it does.
they are not static, so they need to be instantiated in order to be used, right?
Yes, but you are still instantiating the class with new ImplementHeaderButtons()
, you just aren't storing a reference to that newly created instance anywhere.
You can still call a method on this instance as you have done in your example, but you will not be able to do anything else with it afterwards without a reference. Eventually the instance will be cleaned up by the garbage collector (provided the method you call does not store a reference to the object somewhere).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With