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

 

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

Κάτι απλό σε structs

Îåêßíçóå áðü ôï ìÝëïò dtakis. Τελευταία δημοσίευση από το μέλος dtakis στις 02-11-2009, 12:37. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  02-11-2009, 11:31 54889

    Κάτι απλό σε structs

    Μέχρι τώρα πίστευα ότι να δηλώσει ένα struct & έναν constructor με το ίδιο όνομα είναι απλό:

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace LessonConsoleApplication2
    {
        class Program
        {
            struct Person
            {
                public string firstName;
                public string lastName;
                public int age;
            }
    
            public Person(string _firstName, string _lastName, int _age)
            {
            firstName = _firstName;
            lastName = _lastName;
            age = _age;
    
                
            }
    
            public override string ToString()
            {
            return firstName + " " + lastName + ", age " + age;
            }
    
            static void Main(string[] args)
            {
                Person p = new Person("Tony", "Allen", 32);
                Console.WriteLine(p);
                Console.Read();
            }
        }
    }
    Γιατί όμως επιμένει ο Compiler ότι:
    Error 1 Method must have a return type 
    Γιατί πιστεύει ότι ο Person(string _firstName κτλ) είναι Method;
    Δημοσίευση στην κατηγορία:
  •  02-11-2009, 11:52 54890 σε απάντηση της 54889

    Απ: Κάτι απλό σε structs

    Γιατί πολύ απλά δηλώνεις την μέθοδο Person εκτός εμβέλειας του struct, (μέσα στην κλάση Program) μάλλον απροσεξία ;-)
  •  02-11-2009, 12:02 54891 σε απάντηση της 54889

    Απ: Κάτι απλό σε structs

    Για να δηλώσεις constructor στο struct Person, πρέπει να γράψεις τον constructor μέσα στο struct.
    Δηλαδή:
    struct Person
    {
                public string firstName;
                public string lastName;
                public int age;
           
    
            public Person(string _firstName, string _lastName, int _age)
            {
            firstName = _firstName;
            lastName = _lastName;
            age = _age;            
            }
    
    }
    Επίσης η μέθοδος ToString εκεί που έχει τοποθετηθεί κάνει override την μέθοδο ToString() της κλάσης Program και όχι του struct. Για να πετύχεις αυτό που θέλεις δηλαδή θα πρέπει να μπει και αυτό μέσα στο struct.
    Δοκίμασε δηλαδή αυτό:
    class Program
        {
            struct Person
            {
                public string firstName;
                public string lastName;
                public int age;       
    
    	    public Person(string _firstName, string _lastName, int _age)
                {
    	        firstName = _firstName;
            	lastName = _lastName;
    	        age = _age;            
    	    }
    
    	    public override string ToString()
                { 
        	        return firstName + " " + lastName + ", age " + age;
    	    }
    	}
    
            static void Main(string[] args)
            {
                Person p = new Person("Tony", "Allen", 32);
                Console.WriteLine(p);
                Console.Read();
            }
        }

    Κώστας Τσιώλης
  •  02-11-2009, 12:37 54892 σε απάντηση της 54891

    Απ: Κάτι απλό σε structs

    αχχ! Απόλυτα λογικό :)

    Νιώθω τελείως noobάς τώρα Stick out tongue

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems