Page 1 of 1

Defining a new object from another namespace class.

PostPosted: Sun Jun 18, 2017 12:27 am
by beefy
Hi Balazs,

(or anyone else who can explain this).

Trying to get a deeper understanding of the example plugin. At the beginning we have this line:

Code: Select all
public Plugininterface.Entry UC;


My understanding is that this creates a new instance/object of class "Entry" of the namespace "Plugininterface".

From my C# studies, I've only encountered this way of creating a new object of a class:

Code: Select all
Entry UC = new Entry();


However, those types of example were in the same namespace, so I would expect the correct way to be:

Code: Select all
Plugininterface.Entry UC = new Plugininterface.Entry();


or something like that. So that's why I'm confused about the way the plugin example creates the UC object and adds the "public" access modifier too:

Code: Select all
public Plugininterface.Entry UC;


So this sounds to me like a "public object" is being created, but I've never heard of that so far. Have I got it completely wrong.

Keith.

Re: Defining a new object from another namespace class.

PostPosted: Sun Jun 18, 2017 2:02 am
by cncdrive
Hi Keith,

public Plugininterface.Entry UC;


This defines a Plugininterface.Entry type of object named UC and the visibility of the object is public.
The object is not instanced yet with this statement, you only defined your object.

Entry UC = new Entry();


This is a code where you create an instance of an object.
This is the same as:

Plugininterface.Entry UC = new Plugininterface.Entry();


You just did not type out the full type identifier and generally speaking this short typed out code can work if you have a using Plugininterface; include directive, or if your class is also in the Plugininterface namespace and if there is no other class definition names Entry, I mean if there was then you must type out the full type identifier otherwise there was a distinguish between the 2 same type short names.
The compiler is clever enough that you don't always have to type out the full type of your objects, you can shorted it if there is no distunguish, I mean if there are no others included with the same class name in different namespaces, however the compiler also clever enough to find these kind of issues and it will give you an error if there is a distunguish, if for example there is Plugininterface.Entry class type and there is also e.g. Myclass.Entry class type included and so visible, and so if you will try to define an object like Entry Myobject; then that will give an error telling you that the compiler can't distunguish between the 2 types, so it will be unable to decide which object type you will want to create and so will give you an error.

Re: Defining a new object from another namespace class.

PostPosted: Sun Jun 18, 2017 3:00 am
by beefy
Much appreciated Balazs,

hey you should be relaxing on a Sunday :P (not that I am).

I try not to bother you with general C# questions, but I could not find the answer in books or Google. Anyway, very happy to have learned a little bit more about how it all works. I'm a lot further ahead than when I first started.

Cheers,

Keith.