Verständnisfrage zu Mustinherit, Overrides, Protected Sub New(), ...

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von Bartosz.

    Moin nochmal, ich stehe hier gerade auf dem Schlauch. Wie kann ich eine Sub von Form1 aus aufrufen?

    Also, ich habe eine

    VB.NET-Quellcode

    1. Public MustInherit Class Class_1 : Inherits UnmanagedObject
    2. End Class


    Visual Studio sagte, aufgrund von UnmanagedObject, muss die nächste Klasse auch das Protected Overrides Sub enthalten: BC30610 Visual Basic Class must either be declared 'MustInherit' or override the following inherited member(s): DisposableObject: Protected MustOverride Overloads Sub DisposeObject().

    VB.NET-Quellcode

    1. Public Class Derived_Class : Inherits Class_1
    2. Protected Overrides Sub DisposeObject()
    3. Throw New NotImplementedException()
    4. End Sub
    5. End Class


    Brauche ich jetzt noch ne dritte Klasse

    VB.NET-Quellcode

    1. Public Class Third_Class
    2. Public Sub New() 'Richtig??
    3. MyBase.New()
    4. End Sub
    5. End Class

    ??
    Wenn ja, ist das Public Sub New() MyBase.New() End Sub dann richtig? Oder muss das Protected heißen?
    An die Neulinge: Nutzt Option Strict On und Option Infer Off. Dadurch kommt ihr mit Datentypumwandlungen nicht durcheinander und der Code verbessert sich um Einiges! Solche Fehler à la Dim Beispiel As Integer = "123" können nicht mehr passieren.
    Hab jetzt zwar nicht auf die Schnelle herausfinden können, was UnmanagedObject ist, aber scheint unerheblich zu sein.
    Ich finde den Zusammenhang zwischen Deinen Frage nicht.

    Bartosz schrieb:

    Wie kann ich eine Sub von Form1 aus aufrufen?
    Welche Sub?

    Bartosz schrieb:

    Brauche ich jetzt noch ne dritte Klasse
    Nein, wenn Dir Derived Class reicht. Aber in welchem Zusammenhang stehen Derived_Class und ThirdClass?

    Bartosz schrieb:

    Wenn ja, ist das Public Sub New() MyBase.New() End Sub dann richtig?
    Da ThirdClass nicht erbt, kann es MyBase.New nicht aufrufen, da es dafür keine MyBase alias Basisklasse gibt. Derived_Class hingegen kann im eigenen Konstruktor MyBase.New aufrufen, muss es aber nicht. Wenn es das macht, dann muss es aber an erster Stelle stehen.
    Jetzt brauchen wir nur noch die Zusammenhänge, dann können wir vielleicht wirklich weiterhelfen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Erstmal erledigt, es gibt heute Abend einen neuen Thread mit nem guten Beispiel.
    An die Neulinge: Nutzt Option Strict On und Option Infer Off. Dadurch kommt ihr mit Datentypumwandlungen nicht durcheinander und der Code verbessert sich um Einiges! Solche Fehler à la Dim Beispiel As Integer = "123" können nicht mehr passieren.