Why can I create an instance of a class without storing it to a variable and still have everything work?

前端 未结 3 1021
南方客
南方客 2021-01-20 00:28

I have a non-static class called ImplementHeaderButtons which contains a non-static public method called Implement. The name of the class and metho

相关标签:
3条回答
  • 2021-01-20 01:19

    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).

    0 讨论(0)
  • 2021-01-20 01:21

    A variable is just a reference, for your convenience. You are not naming it, but it is just there, on the top of the stack (in general ;-) ). Do you can call it's methods as long as you can refer to the variable, either by using it's name (which you do not have) or by working on the "unnamed" object you've just created.

    0 讨论(0)
  • 2021-01-20 01:21

    Your call to new ImplementHeaderButtons() returns an instance of ImplementHeaderButtons. Then, you call .Implement() on that instance.

    Think of it like this:

    (new ImplementHeaderButtons()).Implement(this, headerButtons);
    
    0 讨论(0)
提交回复
热议问题