new oder nicht new, is hier die fraggää



  • man kann doch diverse komponenten über das tool-menü auf dem form platzieren. man kann aber auch die dinger mit new draufmachen.
    gibt es da einen funktionellen unterschied?



  • ich gaube da ist kein funktioneller unterschied. mit new macht man es sinvollerweise dann, wenn erst zur laufzeit feststeht, welche komponenten aufs form draufsollen.



  • -com-:Blödsinn. Die Komponenten werden IMMER mit "new" hinzugefügt. Mit dem Designer und dem "draufziehen" wird das nur in einer Code-Behind(desinger.cs) mit new erzeugt.



  • Objekte können nur mit new erzeugt werden.



  • @Zeus:Nö, nicht ganz. Du meinst wohl eher das nur Referencetypes mit new erzeugt werden können, weil valuetypes auch ohne new benutzbar sind.



  • Firefighter schrieb:

    @Zeus:Nö, nicht ganz. Du meinst wohl eher das nur Referencetypes mit new erzeugt werden können, weil valuetypes auch ohne new benutzbar sind.

    *Seufz* Wie legst du Struct an? Ohne New?

    Ausnahme sind
    - String ist eine Klasse kann aber mit StringLiteral initlisiert werden.
    - Primitiven bzw Systemstrukturen (Int, Bool etc..)



  • Klaro sind doch valuetypes die kommen doch auf den Stack, lass mich zeigen worauf ich abspiele:

    class Test
    {}
    struct STest
    {}
    
    Test t;
    //benutze t -> nullreference exception
    STest stest;
    //benutze stest -> keine probleme
    

    structs sind valuetypes wie int und double, die kann mana uch ohne new benutzen.



  • Wenn ein string mit einem Stringliteral erzeugt wird, wird auch nur der implizit operator für char array aufgerufen und mit new eine neue referenzu zurückgegeben 🙂



  • *Seufz* und die C# Specification wiedersprichst sich.



  • Zeus schrieb:

    *Seufz* und die C# Specification wiedersprichst sich.

    Das verstehe ich nicht.



  • volkard schrieb:

    Zeus schrieb:

    *Seufz* und die C# Specification wiedersprichst sich.

    Das verstehe ich nicht.

    Es geht darum, dass in der Spezifikation steht, dass Instanzen von Referenztypen Objekte sind. Weicht es aber in eine andere Stelle auf, dass man sowohl Instanzen von Valuetypen auch als Objekte bezeichnen könnte.



  • Zeus schrieb:

    volkard schrieb:

    Zeus schrieb:

    *Seufz* und die C# Specification wiedersprichst sich.

    Das verstehe ich nicht.

    Es geht darum, dass in der Spezifikation steht, dass Instanzen von Referenztypen Objekte sind. Weicht es aber in eine andere Stelle auf, dass man sowohl Instanzen von Valuetypen auch als Objekte bezeichnen könnte.

    Steht da, daß NUR Instanzen von Referenztypen Objekte sind, oder daß ALLE Instanzen von Referenztyoen Objekte sind?



  • A reference type value is a reference to an instance of the type, the latter known as an object. The special value null is compatible with all reference types and indicates the absence of an instance

    C#’s type system is unified such that a value of any type can be treated as an object.



  • Zeus schrieb:

    volkard schrieb:

    Zeus schrieb:

    *Seufz* und die C# Specification wiedersprichst sich.

    Das verstehe ich nicht.

    Es geht darum, dass in der Spezifikation steht, dass Instanzen von Referenztypen Objekte sind. Weicht es aber in eine andere Stelle auf, dass man sowohl Instanzen von Valuetypen auch als Objekte bezeichnen könnte.

    Und wo ist der Widerspruch? Der Unterschied von Referenz-Type und Value-Type liegt lediglich im Speichermodell. Primitives wie in anderen Sprachen gibt es nicht, alles sind Objekte. Reference-Types (class) existieren auf dem heap, Value-Types(struct) auf dem Stack.



  • Firefighter schrieb:

    -com-:Blödsinn. Die Komponenten werden IMMER mit "new" hinzugefügt. Mit dem Designer und dem "draufziehen" wird das nur in einer Code-Behind(desinger.cs) mit new erzeugt.

    ok, designer.cs kannte ich noch nicht, wieder dazugelernt, coole sache das! 👍


Log in to reply