Προς το περιεχόμενο

C# inner classes?


Turrican

Προτεινόμενες αναρτήσεις

Δημοσ.

Εξετάζω τελευταία τη γλώσσα C# γιατι θα ισως να μου χρειστεί στη δουλειά μου κάποια στιγμή και έχω μια απορία.

 

Η γλώσσα δεν υποστηρίζει inner classes, είναι αλήθεια αυτό;

 

Οι εσωτερικές κλάσεις είναι ένα πολύ βοηθητικό στοιχείο στην Java σε πολλές περιπτώσεις (πχ σε GUIs για event handling ή σε Nodes σε Collections κλπ).

Δημοσ.

H C# είναι ένα μίγμα VB, C++ και Java. Όποιος ασχολείται με προγραμματισμό θα το παρατηρήσει ότι έχει στοιχεία και από τις τρείς γλώσσες.

 

Σε .ΝΕΤ πάντως, όποια γλώσσα και να χρησιμοποιήσεις (VB, VC++, C#, Perl, Pascal, και δεν ξέρω ποιοί άλλοι compiler κυκλοφορούν), το εκτελέσιμο αρχείο που θα πάρεις είναι σχεδόν το ίδιο. Αυτό συμβαίνει επειδή η μεταγλώτιση γίνεται πρώτα σε μια ενδιάμεση γλώσσα (CLR, Common Language Runtime) και μετά σε γλώσσα μηχανής.

Μοναδική περίπτωση να έχεις διαφορά στις επιδόσεις είναι αν κάνεις εκτενή χρήση μεγάλων πινάκων και χρησιμοποιείς δείκτες σε δείκτες, πίνακες δεικτών ή άλλες τεχνικές βελτιστοποίησης. Ακόμα και για απλούς δείκτες, μέχρι και η VB τους υποστηρίζει (Όταν περνάει ένα όρισμα σε συνάρτηση ByRef αντί για ByVal ουσιαστικά είναι δείκτης)

Δημοσ.

pilotsf:

>
public class A
{
   int y;

   public static class B
   {
int x;

void F() {}
   }
}

 

The methods of a nested class may access all the members (fields or methods) of the nested class but they can access only static members (fields or methods) of the outer class. Thus, F can access the field x, but it cannot access the field y.

 

Αυτό ακριβώς εννοώ. Για να έχεις πρόσβαση στο y πρέπει να φτιάξεις έναν constructor στην B που να παίρνει ένα A argument;; Δεν είναι λίγο "ανορθόδοξο" αυτό;

 

StavrosD:

Δεν καταλαβαίνω ομως τι σχέση έχουν αυτά με τις εσωτερικές κλάσεις.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...