Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 19862|Απάντηση: 1

[Πηγή] Αναλυτικά η κληρονομικότητα χαρακτηριστικών .net/c#

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 14/2/2017 11:13:38 π.μ. | | |
Περιγραφή:

Υπάρχουν δύο, η Α και η Β, η Α κληρονομεί την κλάση Β και μετά η Β είναι η γονική κλάση

Έχω ορίσει τις ιδιότητες TestAttribute στην κλάση Α και στην κλάση Β αντίστοιχα...

Στη συνέχεια, πάρτε τα χαρακτηριστικά του αντικειμένου και ο κώδικας έχει ως εξής:



Βρήκα ότι ο αριθμός των αποτελεσμάτων είναι 1 και το χαρακτηριστικό είναι το χαρακτηριστικό που ορίζεται από το Α, όχι το χαρακτηριστικό που ορίζεται από το Β, πόσο μάλλον συγχωνευμένο, γιατί συμβαίνει αυτό???


[help("BaseClass")] publicclass Base{} publicclass Derive : Base{}
Υπάρχουν τέσσερις πιθανοί συνδυασμοί εδώ:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false ]  
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false ]  
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true ]  
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true ]  
Η πρώτη περίπτωση:

Εάν ρωτήσουμε την κλάση Derive (θα δούμε αργότερα πώς να ρωτήσουμε τις ιδιότητες μιας κλάσης κατά τον χρόνο εκτέλεσης), θα διαπιστώσουμε ότι η δυνατότητα Βοήθειας δεν υπάρχει επειδή η μεταβιβασμένη ιδιότητα έχει οριστεί σε false.

Δεύτερη περίπτωση:

Το ίδιο όπως και στην πρώτη περίπτωση, επειδή το inherited ορίζεται επίσης σε false.



Η τρίτη περίπτωση:

Για να εξηγήσουμε την τρίτη και την τέταρτη περίπτωση, ας προσθέσουμε πρώτα λίγο κώδικα στην παράγωγη κλάση:

[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{}
Τώρα ας ρωτήσουμε τη δυνατότητα Βοήθειας, μπορούμε να λάβουμε μόνο τις ιδιότητες της παράγωγης κλάσης, επειδή το inherited έχει οριστεί σε true, αλλά το AllowMultiple έχει οριστεί σε false. Επομένως, η δυνατότητα Βοήθειας της βασικής κλάσης παρακάμπτεται από τη δυνατότητα βοήθειας της παράγωγης κλάσης.

Η τέταρτη περίπτωση:

Εδώ θα διαπιστώσουμε ότι η παράγωγη κλάση έχει τόσο τη δυνατότητα Βοήθειας της βασικής κλάσης όσο και τη δική της δυνατότητα Βοήθειας, επειδή το AllowMultiple έχει οριστεί σε true.







Προηγούμενος:Εκχώρηση C# μεταξύ δύο ιδιοτήτων αντικειμένου
Επόμενος:Μη εντοπισμένο TypeError: a(...). γονείς(...). και ο Εαυτός δεν είναι συνάρτηση
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 30/3/2017 9:35:49 π.μ. |
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com