[X] Einführung in C# .Net



  • Hi zusammen ich würde mich anbieten nach dem Beitrag Einführung in .Net gleich mal eine .Net Sprache vorzustellen und zwar würde es um folgendes gehen:

    C# .Net:

    1.Übersicht
    2.Typen
    3.Ausdrücke (Expressions)
    4.Deklarationen
    5.Anweisungen(Statements)

    eventuell noch

    6.Klassen und Strukturen

    Ich will mal einen ganz kleinen eindruck geben wie es aussehen könnte:

    1. Übersicht:

    In diesem Artikel möchte ich eine kleine Einführung in C# .Net geben und kurz und bündig erklären worum es geht.

    C# .Net ist eine Programmiersprache die sehr ähnlich ist wie Java
    ca 70% sind wie in Java, 10% C++, 5% Visual Basic und nur 15% sind ganz neu

    Ähnlichkeiten zu Java:
    •Objectorientierung (einfach Vererbung)
    •Interfaces
    •Exceptions
    •Threads
    •Namespaces (wie Packages)
    •Garbage Collection
    •Reflection
    •dynamisches Code-loading
    •...

    Ähnlichkeiten zu C++:
    •überladen (von Operator)
    •Pointer Arithmetic in unsicherem (unsafe) Code
    •syntaktische Details

    wirklich neu:
    •Referenz und output Parameter
    •Objekte auf dem Stack (structs)
    •Rectangular Arrays
    •Enumerationen
    •Unified type system
    •goto
    •Versionierung

    Syntaktische Schönheiten:
    •Delegates
    •Indexers
    •Operator overloading
    •foreach Statements
    •Boxing/unboxing
    •Attribute
    •...

    so könnte es weiter gehen wenn ihr interesse dran habt



  • Hab zwar mit C# nix am Hut, aber es wäre bestimmt ein interessanter Artikel, gerade im Hinblick auf die Einführung in .net von Talla.
    Willst das wie ein Tutorial aufziehen oder welche Struktur hast du dir vorgestellt? Das sieht jetzt nämlich sehr umfangreich aus.



  • Ich finde das auch mal interessant, vor allem weil zig C# Bücher im Regal einstauben und ich immer noch nicht genau weiß, wasda so alles geht. 😉



  • Wenn du Hilfe brauchst kann ich dir gerne bei technischen Fragen helfen 😃
    Aber willst du wirklich nur C# als Sprache betrachten? Weil man gerät sehr schnell in Versuchung eher über Eigenschaften des Frameworks noch zu erzählen als über die Sprache.



  • hm naja Tutorial sag ich mal jain also ich will es nicht all zu sehr aufblasen, weil es quasi ein näher bringen der Sprache sein soll, um genaueres zu erklären ist der Artikel tatsächlich sonst so zu umfangreich. Wenn ihr meint dass das nicht Wert ist einen Artikel zu schreiben dann sagt es mir, oder ihr sagt mir wie ich es sonst machen könnte. Vielleicht mal noch was zu Typen um einen kleinen Eindruck zu geben wie ich es mir vorstelle:

    2. Typen (Types)

    BILD

    Alle Typen sind kompatibel zu "Object". Ebenso können alle Typen Variablen vom Typ Object zugewiesen werden und es sind alle Objekt-Operationen auf sie anwendbar.

    Unterschied zwischen Festwert-Typen(value Types) und Referenz-Typen (reference-Types)

    Festwert-Typen:
    Festwert-Typen enthalten Werte die in ihnen gespeichert werden, sie werden auf dem Stack gespeichert. Bei einer Zuweisung wird der Wert kopiert. Die Initialisierung von Festwerttypen kann wie folgt aussehen:

    int i = 0;
    // oder
    bool b = false;
    // oder
    string s = '\0'
    

    BILD

    Referenz-Typen:
    Im Gegenteil zu Festwert-Typen werden in Referenztypen, wie der Name schon sagt, Referenzen zu Objekten gespeichert, und bei Zuweisungen wird ebenfalls die Referenz kopiert; keine Werte. Referenzen werden auch nicht auf dem Stack sodern auf dem Heap gespeichert und werden immer mit null initialisiert.

    BILD

    zu den primitiven Datentypen gehören hier

    primitiver Typ       Long Form        in Java        Range
    
    sbyte               System.SByte     byte           -128 .. 127
    byte                System.Byte      ---            0..255
    short               System.Int16     short          -32768 .. 32767
    ushort              System.UInt16    ---            0 .. 65535
    int                 System.Int32     int            -2147483648 .. 2147483647
    uint                System.UInt32    ---            0 .. 4294967295
    long                System.Int64     long           -2[h]63[/h].. 2[h]63[/h]-1
    ulong               System.UInt64    ---            0 .. 2[h]64[/h]-1
    float               System.Single    float          ±1.5E-45 .. ±3.4E38(32 Bit)
    double              System.Double    double         ±5E-324 .. ±1.7E308(64 Bit)
    decimal             System.Decimal   ---            ±1E-28 .. ±7.9E28 (128 Bit)
    bool                System.Boolean   boolean        true,false
    char                System.Char      char           Unicodecharacter
    

    jetzt würde noch was zur Kompatibilität unter den Typen kommen und noch ne Kleinigkeit über Enums, und damit wären dann die Types abgeschlossen.

    was meint ihr??



  • Polofreak, du darfst die Bilder auch gerne bei uns hochladen. 😉

    Alle Typen sind kompatibel zu "Object".

    Also von Object abgeleitet? 😕

    Referenztypen [...] und werden immer mit null initialisiert

    Sind die sowas wie Zeiger in C? Aber was sind dann Pointer?

    zu den primitiven Datentypen gehören hier
    

    Huch, Themenwechsel? Eben war es noch der Abschnitt Referenztypen - da fehlt wohl die Überschrift. 😕

    Insgesamt wäre es schön, da hier wohl mehr Leute C und C++ als Java können, wenn du zu beiden Sprachen vergleichen könntest.
    Also noch eine Spalte in die Tabelle z.B. 🙂



  • Polofreak: So wie der Teil über Typen, das könnte ich mir sehr gut vorstellen. Ein Anreißen von C# ist sicherlich für viele hilfreich.

    estartu_de schrieb:

    Referenztypen [...] und werden immer mit null initialisiert

    Sind die sowas wie Zeiger in C? Aber was sind dann Pointer?

    Ich nehme an die C# Referenzen ähneln den von Java.



  • GPC schrieb:

    Polofreak: So wie der Teil über Typen, das könnte ich mir sehr gut vorstellen. Ein Anreißen von C# ist sicherlich für viele hilfreich.

    estartu_de schrieb:

    Referenztypen [...] und werden immer mit null initialisiert

    Sind die sowas wie Zeiger in C? Aber was sind dann Pointer?

    Ich nehme an die C# Referenzen ähneln den von Java.

    Haben die irgendwas mit z.B. int& in C++ zu tun? Da kann man ja blos kein NULL reinstecken, Referenz heißts ja. 😃
    Aber vielleicht wird das ja noch erklärt. 🙂

    Sonst war der Teil schon nett zu lesen.



  • Eher nicht.
    In Java können Referenzen null sein:

    String s = "Hallo";
    s = null;
    

    In C++ eben nicht. Na ja, genaugenommen erwarten wir nur, dass sie etwas referenzieren, haben aber keine Möglichkeit nachzuschauen ob sie's wirklich tun...



  • Talla schrieb:

    ...Aber willst du wirklich nur C# als Sprache betrachten?...

    joa siehe Postings wo ich Beispiel bringe.

    estartu_de schrieb:

    Polofreak, du darfst die Bilder auch gerne bei uns hochladen. 😉

    hm irgendwo hier im Forum stand des wo und wie ich das machen kann, und wie die Bildtags gehen. Oder?

    estartu_de schrieb:

    Alle Typen sind kompatibel zu "Object".

    Also von Object abgeleitet? 😕

    Hm ich muss nochmal nachlesen ich glaub sie sind nicht von Object abgeleitet sind aber ohne expiciten Cast zuweisbar, beim zurückcasten muss man allerdings explizit casten.

    estartu_de schrieb:

    Referenztypen [...] und werden immer mit null initialisiert

    Sind die sowas wie Zeiger in C? Aber was sind dann Pointer?

    zu den primitiven Datentypen gehören hier
    

    Huch, Themenwechsel? Eben war es noch der Abschnitt Referenztypen - da fehlt wohl die Überschrift. 😕

    joa rischtisch hier fehlt die Überschrift und mit den Refernztypen so wie GPC sagt sehr java ähnlich (wie so vieles 🙄 )

    estartu_de schrieb:

    Insgesamt wäre es schön, da hier wohl mehr Leute C und C++ als Java können, wenn du zu beiden Sprachen vergleichen könntest.
    Also noch eine Spalte in die Tabelle z.B. 🙂

    OK die Tabelle könnte man wohl mit C/C++ erweitern aber sonst ist es recht schwer weil es einfach ähnlicher zu java ist.



  • ich hab mir den Thread nochmal durchgelesen und wenn ich das richtig verstanden habe, dann fang ich mal an, ein wenig zu schreiben. Dann will ich nochmal kurz fragen, soll ich das hier weiter führen oder soll ich einen neuen Thread aufmachen? Tut mir leid wenn ich vielleicht noch den einen oder anderen Fehler mache, ist halt mein erster Artikel. *shy*



  • Polofreak schrieb:

    estartu_de schrieb:

    Polofreak, du darfst die Bilder auch gerne bei uns hochladen. 😉

    hm irgendwo hier im Forum stand des wo und wie ich das machen kann, und wie die Bildtags gehen. Oder?

    Guck in die Anleitung, alleroberster Post: http://www.c-plusplus.net/forum/viewtopic-var-t-is-121848.html

    Wenn du nur mit Java vergleichen willst ist das okay - du bist der Autor und es war nur ein Vorschlag von mir. 🙂



  • okay hab es gelesen weiß aber nicht ob ich hier weiter schreiben soll, oder ob ich nen neuen THread starten sollte, aber egal ich fang mal hier an und wenn ich einen neuen hätte anfangen sollen, dann mach ich das dann. Wenn ich dennoch Fehler machen sollte, dann bitte gleich sagen.



  • Einführung in C# .Net:

    1.Übersicht
    2.Typen
    3.Ausdrücke (Expressions)
    4.Deklarationen
    5.Anweisungen(Statements)
    6.Klassen und Strukturen

    1. Übersicht:

    In diesem Artikel möchte ich eine kleine Einführung in C# .Net geben und kurz und bündig erklären was C# .Net ist, Besonderheiten und Ähnlichkeiten zu anderen Sprachen sind auch mit ein Thema.

    C# .Net ist eine Programmiersprache die sehr ähnlich ist wie Java
    ca 70% sind wie in Java, 10% C++, 5% Visual Basic und nur 15% sind ganz neu

    Ähnlichkeiten zu Java:
    •Objectorientierung (einfach Vererbung)
    •Interfaces
    •Exceptions
    •Threads
    •Namespaces (wie Packages)
    •Garbage Collection
    •Reflection
    •dynamisches Code-loading
    •...

    Ähnlichkeiten zu C++:
    •überladen (von Operator)
    •Pointer Arithmetic in unsicherem (unsafe) Code
    •syntaktische Details

    wirklich neu:
    •Referenz und output Parameter
    •Objekte auf dem Stack (structs)
    •Rectangular Arrays
    •Enumerationen
    •Unified type system
    •goto
    •Versionierung

    Syntaktische Schönheiten:
    •Delegates
    •Indexers
    •Operator overloading
    •foreach Statements
    •Boxing/unboxing
    •Attribute
    •...

    2. Typen (Types)

    Alle Typen sind kompatibel zu "Object". Ebenso können alle Typen Variablen vom Typ Object zugewiesen werden und es sind alle Objekt-Operationen auf sie anwendbar.

    Unterschied zwischen Festwert-Typen(value Types) und Referenz-Typen (reference-Types)

    Festwert-Typen:
    Festwert-Typen enthalten Werte die in ihnen gespeichert werden, sie werden auf dem Stack gespeichert. Bei einer Zuweisung wird der Wert kopiert. Die Initialisierung von Festwerttypen kann wie folgt aussehen:

    int i = 0;
    // oder
    bool b = false;
    // oder
    string s = '\0'
    

    Referenz-Typen:
    Im Gegenteil zu Festwert-Typen werden in Referenztypen, wie der Name schon sagt, Referenzen zu Objekten gespeichert, und bei Zuweisungen wird ebenfalls die Referenz kopiert; keine Werte. Referenzen werden auch nicht auf dem Stack sodern auf dem Heap gespeichert und werden immer mit null initialisiert.

    Primitive Datentypen:
    zu den primitiven Datentypen gehören

    primitiver Typ       Long Form        in Java        Range
    
    sbyte               System.SByte     byte           -128 .. 127
    byte                System.Byte      ---            0..255
    short               System.Int16     short          -32768 .. 32767
    ushort              System.UInt16    ---            0 .. 65535
    int                 System.Int32     int            -2147483648 .. 2147483647
    uint                System.UInt32    ---            0 .. 4294967295
    long                System.Int64     long           -2[h]63[/h].. 2[h]63[/h]-1
    ulong               System.UInt64    ---            0 .. 2[h]64[/h]-1
    float               System.Single    float          ±1.5E-45 .. ±3.4E38(32 Bit)
    double              System.Double    double         ±5E-324 .. ±1.7E308(64 Bit)
    decimal             System.Decimal   ---            ±1E-28 .. ±7.9E28 (128 Bit)
    bool                System.Boolean   boolean        true,false
    char                System.Char      char           Unicodecharacter
    

    TODO: Kompatibilität unter den Typen
    Enums
    Tabelle mit C/C++ erweitern

    heute abend gehts weiter 😉



  • Polofreak schrieb:

    okay hab es gelesen weiß aber nicht ob ich hier weiter schreiben soll, oder ob ich nen neuen THread starten sollte, aber egal ich fang mal hier an und wenn ich einen neuen hätte anfangen sollen, dann mach ich das dann. Wenn ich dennoch Fehler machen sollte, dann bitte gleich sagen.

    Bitte hier weiterschreiben, bis der Artikel veröffentlichungsfertig ist. 🙂



  • ok ich schreib heute abend wieder ein wenig danke für deinen support während meines ersten Artikels.



  • Einführung in C# .Net:

    1.Übersicht
    2.Typen
    3.Ausdrücke (Expressions)
    4.Deklarationen
    5.Anweisungen(Statements)
    6.Klassen und Strukturen

    1. Übersicht:

    In diesem Artikel möchte ich eine kleine Einführung in C# .Net geben und kurz und bündig erklären was C# .Net ist, Besonderheiten und Ähnlichkeiten zu anderen Sprachen sind auch mit ein Thema.

    C# .Net ist eine Programmiersprache die sehr ähnlich ist wie Java
    ca 70% sind wie in Java, 10% C++, 5% Visual Basic und nur 15% sind ganz neu

    Ähnlichkeiten zu Java:
    •Objectorientierung (einfach Vererbung)
    •Interfaces
    •Exceptions
    •Threads
    •Namespaces (wie Packages)
    •Garbage Collection
    •Reflection
    •dynamisches Code-loading
    •...

    Ähnlichkeiten zu C++:
    •überladen (von Operator)
    •Pointer Arithmetic in unsicherem (unsafe) Code
    •syntaktische Details

    wirklich neu:
    •Referenz und output Parameter
    •Objekte auf dem Stack (structs)
    •Rectangular Arrays
    •Enumerationen
    •Unified type system
    •goto
    •Versionierung

    Syntaktische Schönheiten:
    •Delegates
    •Indexers
    •Operator overloading
    •foreach Statements
    •Boxing/unboxing
    •Attribute
    •...

    2. Typen (Types)

    Primitive Datentypen:
    zu den primitiven Datentypen gehören

    primitiver Typ     Long Form        in Java        Range
    
    sbyte               System.SByte     byte           -128 .. 127
    byte                System.Byte      ---            0..255
    short               System.Int16     short          -32768 .. 32767
    ushort              System.UInt16    ---            0 .. 65535
    int                 System.Int32     int            -2147483648 .. 2147483647
    uint                System.UInt32    ---            0 .. 4294967295
    long                System.Int64     long           -2[h]63[/h].. 2[h]63[/h]-1
    ulong               System.UInt64    ---            0 .. 2[h]64[/h]-1
    float               System.Single    float          ±1.5E-45 .. ±3.4E38(32 Bit)
    double              System.Double    double         ±5E-324 .. ±1.7E308(64 Bit)
    decimal             System.Decimal   ---            ±1E-28 .. ±7.9E28 (128 Bit)
    bool                System.Boolean   boolean        true,false
    char                System.Char      char           Unicodecharacter
    

    Kompatibilität unter den Typen

    Alle Typen sind kompatibel zu "Object". Ebenso können alle Typen Variablen vom Typ Object zugewiesen werden und es sind alle Objekt-Operationen auf sie anwendbar.

    Unterschied zwischen Festwert-Typen(value Types) und Referenz-Typen (reference-Types)

    Festwert-Typen:
    Festwert-Typen enthalten Werte die in ihnen gespeichert werden, sie werden auf dem Stack gespeichert. Bei einer Zuweisung wird der Wert kopiert. Die Initialisierung von Festwerttypen kann wie folgt aussehen:

    int n = 0;
    // oder
    bool b = false;
    // oder
    string s = '\0'
    
    //z.B.:
    int i = 99;
    int j = i;
    

    Referenz-Typen:
    Im Gegenteil zu Festwert-Typen werden in Referenztypen, wie der Name schon sagt, Referenzen zu Objekten gespeichert, und bei Zuweisungen wird ebenfalls die Referenz kopiert; keine Werte. Referenzen werden auch nicht auf dem Stack sodern auf dem Heap gespeichert und werden immer mit null initialisiert.

    string s = "cool";
    string s1 = s;
    

    TODO:
    Tabelle mit C/C++ erweitern

    heute leider nicht all zu viel geschafft, vielleicht wirds nächstmal wieder mehr 🙂



  • hatte in letzter Zeit viel zu tun mit einem kleinen Projekt zu Netzwerkprogrammierung in C# .Net, deshalb bin ich kaum zum Artikel gekomen. Wollte einfach nur melden dass ich es nicht vergessen habe, sondern dass ich momentan einfach nicht dazu gekommen bin. Ich denke das ein weiterer TEil diese Woche fertig wird. aber steter Tropfen hölt den Stein.
    bis demnächst



  • Einführung in C# .Net:

    1.Übersicht
    2.Typen
    3.Enumerationen (Enums)
    4.Boxing & Unboxing
    5.Overflow Checks
    6.Deklarationen
    7.Anweisungen(Statements)
    8.Klassen und Strukturen

    1. Übersicht:

    In diesem Artikel möchte ich eine kleine Einführung in C# .Net geben und kurz und bündig erklären was C# .Net ist, Besonderheiten und Ähnlichkeiten zu anderen Sprachen sind auch mit ein Thema.

    C# .Net ist eine Programmiersprache die sehr ähnlich ist wie Java
    ca 70% sind wie in Java, 10% C++, 5% Visual Basic und nur 15% sind ganz neu

    Ähnlichkeiten zu Java:
    •Objectorientierung (einfach Vererbung)
    •Interfaces
    •Exceptions
    •Threads
    •Namespaces (wie Packages)
    •Garbage Collection
    •Reflection
    •dynamisches Code-loading
    •...

    Ähnlichkeiten zu C++:
    •überladen (von Operator)
    •Pointer Arithmetic in unsicherem (unsafe) Code
    •syntaktische Details

    wirklich neu:
    •Referenz und output Parameter
    •Objekte auf dem Stack (structs)
    •Rectangular Arrays
    •Enumerationen
    •Unified type system
    •goto
    •Versionierung

    Syntaktische Schönheiten:
    •Delegates
    •Indexers
    •Operator overloading
    •foreach Statements
    •Boxing/unboxing
    •Attribute
    •...

    2. Typen (Types)

    Primitive Datentypen:
    zu den primitiven Datentypen gehören

    primitiver Typ     Long Form        in Java        Range
    
    sbyte               System.SByte     byte           -128 .. 127
    byte                System.Byte      ---            0..255
    short               System.Int16     short          -32768 .. 32767
    ushort              System.UInt16    ---            0 .. 65535
    int                 System.Int32     int            -2147483648 .. 2147483647
    uint                System.UInt32    ---            0 .. 4294967295
    long                System.Int64     long           -2[h]63[/h].. 2[h]63[/h]-1
    ulong               System.UInt64    ---            0 .. 2[h]64[/h]-1
    float               System.Single    float          ±1.5E-45 .. ±3.4E38(32 Bit)
    double              System.Double    double         ±5E-324 .. ±1.7E308(64 Bit)
    decimal             System.Decimal   ---            ±1E-28 .. ±7.9E28 (128 Bit)
    bool                System.Boolean   boolean        true,false
    char                System.Char      char           Unicodecharacter
    

    Kompatibilität unter den Typen

    Alle Typen sind kompatibel zu "Object". Ebenso können alle Typen Variablen vom Typ Object zugewiesen werden und es sind alle Objekt-Operationen auf sie anwendbar.

    Unterschied zwischen Festwert-Typen(value Types) und Referenz-Typen (reference-Types)

    Festwert-Typen:
    Festwert-Typen enthalten Werte die in ihnen gespeichert werden, sie werden auf dem Stack gespeichert. Bei einer Zuweisung wird der Wert kopiert. Die Initialisierung von Festwerttypen kann wie folgt aussehen:

    int n = 0;
    // oder
    bool b = false;
    // oder
    string s = '\0'
    
    //z.B.:
    int i = 99;
    int j = i;
    

    Referenz-Typen:
    Im Gegenteil zu Festwert-Typen werden in Referenztypen, wie der Name schon sagt, Referenzen zu Objekten gespeichert, und bei Zuweisungen wird ebenfalls die Referenz kopiert; keine Werte. Referenzen werden auch nicht auf dem Stack sodern auf dem Heap gespeichert und werden immer mit null initialisiert.

    string s = "cool";
    string s1 = s;
    

    3. Enumerationen

    Liste von Namenhaften Konstanten deren Deklaration direkt im Namespace geschieht.

    Beispiel:

    enum Farbe{rot, gelb, blau, gruen, lila} // hier sind die Variablen automatisch 0, 1, 2...
    enum WochenTage_mit_d{dienstag=2,donnerstag=4}
    enum WochenTage_mit_d:byte{dienstag=2,donnerstag=4}
    
    //Verwendung:
    Farbe c = Farbe.blau;
    WochenTage_mit_d WTmd = WochenTage_mit_d.dienstag | WochenTage_mit_d.donnerstag;
    if ((WochenTage_mit_d.dienstag & WTmd) != 0) 
    Console.WriteLine("Wochentag ist mit D!");
    

    Was kann man mit Enumerationen machen?
    Die Operatoren sind:
    Vergleichsoperatoren ==; <=; >=; <; >

    if(c == Farbe.blau)//...
    if(c > Farbe.gelb && c < Farbe.lila)//...
    //weitere sind +; -; ++; --;
    c = c+2;
    c--;
    //oder gleich
    c++;
    // dann noch &; |;  ~
    if ((c & Farbe.rot) == 0)// ...
    c = c | Farbe.blau;
    c = ~ Farbe.rot;
    

    ⚠ Der Compiler prüft nicht ob der Enum-Typ einen gültigen Wert annimt.

    Enumerationen können Integern nur nach explizitem Cast zugewiesen werden!
    Enumerationen erben vom Typ Object somit: Equals, ToString, ...
    Die Klasse System.Enum unterstützt Operationen wie GetName, Format, GetValues, ...

    ??. Felder (Arrays)

    Eindimmensionale Arrays:

    int[] a = new int[3];
    

    Mehrdimensionale Felder:
    "ausgefranzte":

    int[][] ausgefr = new int[5][];
    ausgefr[0] = new int[3];
    a[1] = new int[4];
    

    solche Felder sind nicht sehr schnell und brauchen mehr Speicher als
    rechteckige Felder:

    int[,] re = new int[2, 3];
    

    hier sind die Zugriffe effizienter und die Felder sind kompakter

    4. Boxing und Unboxing

    Boxing ist das Stichwort zur Umwandlung von (Structs, Enums oder Integern ...) in ein Objekt. Objekten können somit andere Typen zugewiesen werden. Das könnte dann so aussehen:

    int nZahl=5;
    object obj = nZahl;
    

    Unboxing ist geau das Gegenteil; aus einem Objekt ein Werttyp machen. Das sieht dann so aus:

    int Zahl_aus_obj = (int)obj;
    

    und schon hat man aus dem Objekt ein Integer gemacht.

    5.Overflow Checks
    Standardmäßig werden Overflows nicht abgefangen, somit kann es zu unerwünschtem Verhalten kommen. Da es aber auch sein kann, dass man mit Overflows arbeitet (Zufallszahlen) kann man manuell Overflows abfangen.

    int grosse_Zahl = 999999;
    grosse_Zahl *= grosse_Zahl; 
    // ergibt nicht mathematisch richtiges Ergebnis aber auch keinen Fehler
    
    // wenn man es abfangen will sollte man es besser so machen:
    grosse_Zahl = checked(grosse_Zahl*grosse_Zahl);
    //wirft OverflowException
    

    man kann aber nicht nur einzelne Operationen mit checked prüfen, man kann auch ganze Blöcke prüfen

    checked{
    grosse_Zahl *= grosse_Zahl; 
    }
    //wirft ebenso Overflow Exception
    

    Wenn man allerdings das komplette Assemblie geprüft ausführen will kann man checked als Kompilerfunktion angeben.
    csc /checkedTest.cs



  • Wird ja langsam 🙂

    Polofreak schrieb:

    Einführung in C# .Net:

    Referenz-Typen:
    Im Gegenteil zu Festwert-Typen werden in Referenztypen, wie der Name schon sagt, Referenzen zu Objekten gespeichert, und bei Zuweisungen wird ebenfalls die Referenz kopiert; keine Werte. Referenzen werden auch nicht auf dem Stack sodern auf dem Heap gespeichert und werden immer mit null initialisiert.

    string s = "cool";
    string s1 = s;
    

    Erklärung soweit richtig, aber Beispiel extrem ungünstig gewählt weil bei string so einiges anders läuft als bei normalen Objekten 🙂

    string x = "cool";
                string x2 = x;
                MessageBox.Show(x2);
                x = "Hallo";
                MessageBox.Show(x2);
    

    Was gibts als Ausgabe? Richtig, 2x cool 🙂 Liegt an dem überladen = Operator bei String. Genauso wie == bei String die Werte statt die Referenz vergleicht wie bei anderen Objekten. Es ist einfach der natürlichen Benutzungsweise von string als Wert angepasst. Nimm lieber irgend nen beliebiges anderes Objekt.



  • Nabend,

    bissle pingelig, aber was solls ;).

    Bei 'Kompatibilität unter den Typen' die rote Unterstreichung (Word Rechtschreib-
    pruefung? 🙂 ) wegmachen. Die stoert doch sehr ;).

    mfg
    v R


Anmelden zum Antworten