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

Άποψη: 17968|Απάντηση: 0

[Πηγή] C# όπου ανάλυση χρήσης

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 12/7/2016 11:35:43 π.μ. | | |

Ο όρος where χρησιμοποιείται για τον καθορισμό περιορισμών τύπου που μπορούν να χρησιμεύσουν ως μεταβλητές για παραμέτρους τύπου που ορίζονται σε γενικές δηλώσεις.
1. Περιορισμοί διεπαφής.
Για παράδειγμα, μπορείτε να δηλώσετε μια γενική κλάση MyGenericClass, έτσι ώστε η παράμετρος τύπου T να μπορεί να υλοποιήσει τη διεπαφή IComparable<T>:

δημόσια τάξη MyGenericClass<T> όπου T:IComparable { }

2. Περιορισμός βασικής κλάσης: Υποδεικνύει ότι ένας τύπος πρέπει να χρησιμοποιεί την καθορισμένη κλάση ως βασική κλάση (ή την ίδια την κλάση) για να χρησιμοποιηθεί ως παράμετρος τύπου για αυτόν τον γενικό τύπο.
Μόλις χρησιμοποιηθεί ένας τέτοιος περιορισμός, πρέπει να εμφανίζεται πριν από όλους τους άλλους περιορισμούς στον τύπο της παραμέτρου.
τάξη MyClassy<T, U>
όπου T : τάξη
όπου U : struct
{
}

Η ρήτρα 3.where μπορεί επίσης να περιλαμβάνει περιορισμούς κατασκευαστή.
Μπορείτε να χρησιμοποιήσετε τον νέο τελεστή για να δημιουργήσετε μια παρουσία μιας παραμέτρου τύπου. Αλλά το όρισμα τύπου πρέπει να περιορίζεται από τον περιορισμό του κατασκευαστή new() για αυτό. Ο περιορισμός new() επιτρέπει στον μεταγλωττιστή να γνωρίζει ότι κάθε τύπος ορίσματος που παρέχεται πρέπει να έχει έναν προσβάσιμο κατασκευαστή χωρίς παραμέτρους (ή προεπιλογή). Για παράδειγμα:
δημόσια τάξη MyGenericClass <T> όπου T: IComparable, new()
{
Η ακόλουθη γραμμή δεν είναι δυνατή χωρίς τον περιορισμό new():
Στοιχείο T = νέο T();
}
Ο περιορισμός new() εμφανίζεται στο τέλος της ρήτρας where.

4. Για παραμέτρους πολλαπλών τύπων, κάθε παράμετρος τύπου χρησιμοποιεί έναν όρο where,
Για παράδειγμα:
διεπαφή MyI { }
Λεξικό τάξης<TKey, TVal>
όπου TKey: IComparable, IEnumerable
όπου TVal: MyI
{
δημόσιο κενό Add(TKey key, TVal val)
{
}
}

5. Μπορείτε επίσης να επισυνάψετε περιορισμούς σε παραμέτρους τύπου γενικών μεθόδων, όπως:

public bool MyMethod<T>(T t) όπου T : IMyInterface { }

Σημειώστε ότι η σύνταξη για την περιγραφή των περιορισμών παραμέτρων τύπου είναι η ίδια τόσο για τους πληρεξούσιους όσο και για τις μεθόδους:

delegate T MyDelegate<T>() όπου T : new()





Γενικό Όπου

Generic Where μπορεί να χαρακτηρίσει παραμέτρους τύπου. Υπάρχουν διάφοροι τρόποι.

·όπου T : struct περιορίζει την παράμετρο τύπου που πρέπει να κληρονομήσει το T από το System.ValueType.

·όπου T: η κλάση περιορίζει τον τύπο Η παράμετρος T πρέπει να είναι τύπος αναφοράς, δηλαδή δεν μπορεί να μεταβιβαστεί από το System.ValueType.

όπου T : new() περιορίζει την παράμετρο τύπου Η T πρέπει να έχει έναν προεπιλεγμένο κατασκευαστή

·όπου T : Το NameOfClass περιορίζει την παράμετρο τύπου που πρέπει να κληρονομήσει το T από μια κλάση ή να υλοποιήσει μια διεπαφή.

Αυτά τα προσδιοριστικά μπορούν να συνδυαστούν, όπως: δημόσια τάξη Σημείο όπου T : class, IComparable, new()




Προηγούμενος:c# Μάθημα βοήθειας NHibernate
Επόμενος:c# http ακούει νήματα με το HttpListener
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com