Announcement

Collapse
No announcement yet.

Paramter by ref übergeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Paramter by ref übergeben

    Hallo alle zusammen,<BR>
    ich habe ein Problem, wenn ich einen Paramter mittels <B>ref</B> übergebe.<BR>
    Ich versuche eine abgeleitete Klasse mittels ref einer Methode zu übergeben.<BR>
    Diese Methode wurde aber mit der Basis-Klasse als <by ref> definiert.<BR>

    Folgender Zusammenhang :<BR>
    <PRE>
    public class BasisClass
    {
    ...
    }

    public class InheritedClass : BasisClass
    {
    ...
    }

    public class Test
    {
    ...
    public void Do(<B>ref</B> BasisClass myBasisClass)
    {
    ...
    }
    ...
    public void doTest()
    {
    InheritedClass myClass = new InheritedClass();
    Do(<B>ref</B> myClass);
    }
    }
    </PRE><BR>
    <BR>
    Wenn ich das nun kompilieren will, kommt immer ein Fehler.<BR>

    Kann mir dazu jemand helfen ???<BR>
    Danke im voraus.<BR>
    Gruß Christoph

  • #2
    Hallo,

    der Fehler liegt in dem <b>ref-Parameter</b> - hier ist zwingend der angegebene Typ erforderlich (BasisClass). Objekte von abgeleiteten Klassen, wie InheritedClass, kommen daher nicht in Frage.

    Da <b>ref</b> eigentlich nicht anderes macht, als zu überprüfen, ob eine instantiierte Klasse übergeben worden ist, sollte man folgendes schreiben:

    <pre>
    public void Do(BasisClass myBasisClass)
    {
    if (myBasisClass == null) throw new ArgumentNullException("myBasisClass", "Darf nicht null sein!");
    <i>// weiterer Code hier...</i>
    }
    public void doTest()
    {
    InheritedClass myClass = new InheritedClass();
    Do(inheritedClass);
    }
    </pre>

    Grüße

    Jör

    Comment

    Working...
    X