Es scheint bestimmte Collection-Klassen auch in System.Collections.ObjectModel zu geben. Was ist der Unterschied zwischen den Sammlungen unter diesen beiden Namespaces und in welchem Szenario sollten wir System.Collections.ObjectModel verwenden?System.Collections Vs. System.Collections.ObjectModel
Antwort
Von MSDN:
Der System.Collections.ObjectModel Namespace enthält Klassen, die als Sammlungen im Objekt Modell einer wiederverwendbaren Bibliothek verwendet werden können. Verwenden Sie diese Klassen, wenn Eigenschaften oder Methoden Sammlungen zurückgeben.
Ein offensichtlicher Unterschied ist, dass die System.Collections.ObjectModel
Namespace generic Nur-Lese-Sammlungen enthält (das heißt ohne das Hinzufügen, Entfernen und Löschen Methoden usw.).
System.Collections.ObjectModel-Klassen sind nützlich, um Ihre Sammlungen der Außenwelt zugänglich zu machen. (Mit der Außenwelt meine ich Code, der nicht mit Ihrem Code versioniert).
Verwenden Sie also generische Auflistungsklassen in Ihrem Code, aber wickeln Sie sie in eine Collection, ReadOnlyCollection oder ObservableCollection, wenn Sie sie der Außenwelt zugänglich machen möchten .
Um eine Sammlung als eine Keyed-Sammlung zu umbrechen, kann die KeyedCollection als Basisklasse für einen Helfer verwendet werden.
- 1. Generics and System.Collections
- 2. Kann ArrayList Typ in System.Collections nicht finden
- 3. 'Portable.BouncyCastle' hat bereits eine Abhängigkeit für 'System.Collections' definiert
- 4. Warum gibt es keine Klasse ReadOnlyList <T> in der Bibliothek System.Collections von C#?
- 5. Was ist der Unterschied zwischen System.Collections, System.Collections.Specialized und System.Collections.Generic in .NET?
- 6. Klasse vs Paket vs Modul vs Komponente vs Container vs Service vs Plattform in Java Welt
- 7. C# Namespace Alias-Qualifikationsmerkmal (: :) vs. Dereferenzierungsoperator (.)
- 8. Opa vs Dart vs Haxe vs Coffee
- 9. Akkumulieren vs falten vs reduzieren vs komprimieren
- 10. body.scrollTop vs documentElement.scrollTop vs window.pagYOffset vs window.scrollY
- 11. ACE vs Boost vs Poco vs wxWidgets
- 12. Inline vs __inline vs __inline__ vs __forceinline?
- 13. Metaphon vs Levenshtein vs Soundex vs Hamming
- 14. Standort vs GeoPoint vs 1E6 vs Aufladen
- 15. VS 2013 MSTest vs nUnit vs xUnit
- 16. Exec vs ExecWait vs ExecShell vs nsExec :: Exec vs nsExec :: ExecToLog vs nsExec :: ExecToStack vs ExecDos vs ExeCmd
- 17. SpiderMonkey vs JavaScriptCore vs?
- 18. & vs * und | vs +
- 19. Bundler vs RVM vs Gems vs RubyGems vs Gemsets vs System Ruby
- 20. Mathematica: Unevaluated vs Aufschieben vs Halten vs Holdform vs HoldAllComplete vs etc etc
- 21. ScheduledExecutorService vs Timer vs Handler
- 22. HttpRequest vs HttpRequestMessage vs HttpRequestBase
- 23. pycuda vs theano vs pylearn2
- 24. Entfernungsabtastung vs Einzelscan vs Überspringungssuche
- 25. Htmlentities vs addslashes vs mysqli_real_escape_string
- 26. Xamarin vs Mono vs Monodevelop
- 27. Ansichtsfenster vs Fenster Vs Dokument
- 28. Redis vs Memcahced vs Hazelcast
- 29. java.lang.Void vs void vs Null
- 30. import vs __import __() vs importlib.import_module()?