Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

.Net Tips & tricks

Îåêßíçóå áðü ôï ìÝëïò object+. Τελευταία δημοσίευση από το μέλος object+ στις 05-12-2009, 03:15. Υπάρχουν 0 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  05-12-2009, 03:15 55708

    .Net Tips & tricks

    Γεια χαρα νταμ. Το χομπι μου ειναι ο προγραμματισμος, ξερω αρκετες γλωσσες αλλα μαρεσουν δυο C# C++ με μεγαλυτερη προτιμηση στη πρωτη. Λεω να γραψω μερικα πραγματα που ξερω για τα βασικα της νετ. Ο λογος που θα τα γραψω δεν ειναι οτι το παιζω ξερολας, αλλα ρε παιδι μου, ειναι λιγα αυτα που εχουν γραφτει στα Ελληνικα περι .net (c#). 
    (Θα ηθελα συμμετοχη και απο αλλα μελη που ενδιαφεροντε για αυτη τη γλωσσα, δε νομιζω οτι ειμαι ο μονος στην Ελλαδα που εχει αυτο το χομπι) 

    Λοιπος ας αρχισουμε.

    Μια γενικη εικονα της .net. Κυριο, τα παντα ολα ειναι System.Object (τα παντα ολα!), ο τροπος που επικοινωνει με το hardware ειναι τα winapi (+directx api), τελος η cs δε σου βγαζει asm αλλα IL (ilasm).

    Διαφορες μεταξη class (object) & struct(ValueType) ειναι καθαρα allocator. Η class (object) παει στη heap και ο struct (ValueType) στη stack.

    [Trick]
    Εφοσον ο struct παει στη stack δε μπορει να παρει τη τιμη null. Πχ int i = null; //error . Τι μπορουμε να κανουμε αν για το χ ψ λογο θελουμε ενα struct να περνει τη τιμη null; απλο int? i = null ;//ok

    [Tip]
    Πως δουλεβει το foreach loop? Με interfaces, IEnumerator,IEnumerator<T>
     
    [Tip]
    Τι κανει το yield return? Επιστρεφει εναν IEnumerator<T> παραδειγμα
     class Program
        {
            static void Main(string[] args)
            {
                foreach (var item in foo())
                    Console.WriteLine(item);
                Console.Read();
            }
            static IEnumerable<int> foo()
            {
                for (int i = 0; i < 10; i++)
                    if (i % 2 == 0)
                        yield return i;
            }
        }  
     υγ: Επιστρεφει εναν Enumerator ο οποιος εχει ζυγους.
    [Tip]
    Indexer Ειναι κατι σαν τη property με διαφορα οτι φερνει προς array πχ
        class Program
        {
            static void Main()
            {
                fee f = new fee();
                f["prop1"] = "lalala";
                f["prop2"] = "lololo";
                Console.Read();
            }
        }
        class fee
        {
            string property1 { set { Console.WriteLine("property1 updated! value:"+value); } }
            string property2 { set { Console.WriteLine("property2 updated! value:" + value); } }
            public string this[string property]
            {
                set
                {
                    switch (property)
                    {
                        case "prop1": property1 = value;
                            break;
                        case "prop2": property2 = value;
                            break;
                        default:
                            break;
                    }
                }
            }
        }
     
    [Tip] 
    Extension method , το αγαπημενο μου. Εχεις καποιο ετοιμο object και θες να του βαλεις μια συναρτηση, τι κανεις(εκτος απο το να φτιαξεις μια helperclass)?  Extension! 
    Η extension method πρεπει να ειναι σε μια static class, το object που θα παρει το extension πρεπει να βλεπει αυτη τη class. Πως γιατι και τι
     
     class Program
        {
            static void Main()
            {
                X x = new X();
                x.SayHello();
                Console.Read();
            }
        }
        //my object
        class X { }
        //my extension on A
        static class ExA
        {
            public static void SayHello(this X x)
            {
                Console.WriteLine("Hello!!");
            }
        }
     
    [Tip]
    Anonymous type ειναι το αντιθετο απο το named type
    Named type  = class x{..}
    Anonymous type = new{A=1,B=1.2,S="lol"};
     
     
    class Program
        {
            static void Main()
            {
                var anonymous = new { Age = 90, LastName = "Mitsotakis" };
                Console.WriteLine("Age:{0}, Last:{1}",anonymous.Age,anonymous.LastName);
                Console.Read();
            }
        }
     
     
    [tip] Παω για υπνους
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems