C# Verständnisfrage

Gast #3055035
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.
Gast #3055041
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.
Gast #3055075
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.
Gast #3055093
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren