Forum: PC-Programmierung C# Verständnisfrage


von Hasso Plattner (Gast)


Lesenswert?

C# Verständnisfrage

1
C-Code
2
   public partial class mainForm : Form
3
        {
4
        public mainForm()
5
            {
6
            InitializeComponent();
7
8
            // ATmega32U4 example firmware uses VID=0x03EB and PID=0x2150
9
            theUsbDemoDevice = new usbDemoDevice(0x03EB, 0x2150); 
10
11
            // Add a listener for usb events int a = new int
12
            theUsbDemoDevice.usbEvent += new usbDemoDevice.usbEventsHandler(usbEvent_receiver);
13
14
            // Perform an initial search for the target USB device (in case
15
            // it is already connected as we will not get an event for it)
16
            theUsbDemoDevice.findTargetDevice();
17
            }
18
19
        // Create an instance of the USB reference device object
20
        private usbDemoDevice theUsbDemoDevice;      
21
        ...
22
        ...
23
        ...


Was bewirkt diese Zeile?
theUsbDemoDevice = new usbDemoDevice(0x03EB, 0x2150);

Ist das eine Art Konstruktor (Es wird VID und PID übergeben)? Ich habe 
so einen Synta noch nie gesehen.

von Ingo (Gast)


Lesenswert?

Moin,


Hasso Plattner schrieb:
> Ist das eine Art Konstruktor (Es wird VID und PID übergeben)? Ich habe
> so einen Synta noch nie gesehen.

So ist es. Kontruktoren können auch Parameter haben, z.B. zur 
Initialisierung. Ist nicht so ungewöhnlich.

Vielleicht irritiert der Kommenar

>         // Create an instance of the USB reference device object
>         private usbDemoDevice theUsbDemoDevice;
>         ...

Hier wird nur die Instanz-Variable definiert und nicht die Instanz 
erzeugt.

von Hasso P. (Gast)


Lesenswert?

Aha. Danke.
Ich war irritiert, weil, erstens der Konstruktor noch vor der 
Instanzierung steht, und zweitens, weil ich 'new' in diesem Kontext (als 
Newbie) noch nie sah.

von Peter II (Gast)


Lesenswert?

Hasso P. schrieb:
> Aha. Danke.
> Ich war irritiert, weil, erstens der Konstruktor noch vor der
> Instanzierung steht, und zweitens, weil ich 'new' in diesem Kontext (als
> Newbie) noch nie sah.


hast du überhaupt schon mal C# quellcode gesehen?

jedes Gui element wird so angelegt

[c]
this.ButtonResetPos = new System.Windows.Forms.Button();
[\c]

und bei mir steht in jeder 4. Teile mindestens ein new drin.

von Micha (Gast)


Lesenswert?

Wird außerhalb von Methoden einer Klasse eine Variable definiert bzw. 
deklariert, wird das immer vor dem Konstruktoraufruf abgearbeitet.

Mal davon abgesehen, dass der Code dann total unübersichtlich wird, wenn 
zwischen den Methoden immer wieder irgendwelche Variablen stehen.

Gruß
Micha

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.