Gemäß http://msdn.microsoft.com/en-US/library/0fss9skc(v=vs.120).aspx sollten Eigenschaften keine Arrays zurückgeben. Wie wirkt das mit Generika zusammen? Wenn ein Array ein zulässiger Typ für ein generisches ist, sollte ich Funktionen wie T GetValue()
und SetValue(T value)
anstatt T Value { get; set; }
machen?Sind generische Eigenschaften, die Arrays zurückgeben, akzeptabel?
Antwort
Diese Regel ist nicht absolut. Verstehen Sie, woher es kommt: Eine Eigenschaft, die ein Array zurückgibt, muss eine Kopie davon erstellen, damit der Aufrufer seine Kopie mutieren und nicht in den internen Zustand des Objekts gelangen kann.
Wenn Sie mit generischem Code zu tun, dass generischer Code weiß nichts über die konkreten T
. Es hängt nicht von seiner internen Struktur ab. Daher hilft die Einhaltung dieser Regel nicht. Das Übergeben von Arrays innerhalb und außerhalb von generischem Code ist absolut akzeptabel.
Praxisbeispiel: Ein List<int[]>
.
Zusätzlich zu, dass stellt Servy richtig, dass Methoden der Erstellung der Wert erhalten/nicht gesetzt ist wirklich etwas zu tun, um die Auswirkungen in der Begründung für die Regel beschrieben zu mildern.
- 1. Eigenschaften sollten Arrays nicht zurückgeben
- 2. Funktionen, die Arrays zurückgeben
- 3. Vererben Funktionen, die generische Typen zurückgeben
- 4. Wie generische abstrakte Klasse zurückgeben?
- 5. Sind zirkuläre Referenzen in der Datenbank akzeptabel?
- 6. Vergleiche 2 Arrays, die den Unterschied zurückgeben
- 7. Sind Eigenschaften gut oder schlecht?
- 8. sind Eigenschaften in weiteren Eigenschaften
- 9. Sonarqube Generische Abdeckung - Wo sind die Ergebnisse?
- 10. Spring Data Rest-Ausnahmebehandlung - Generische Fehlerantwort zurückgeben
- 11. Generische Funktion, die Wert- und Referenztyp-Objekte zurückgeben kann
- 12. Wie generische Funktion, die Int oder Datum oder String zurückgeben
- 13. Dynamische generische Parameter, die den generischen Typ in Closure zurückgeben?
- 14. Generische ComboBox mit automatisch benannten Eigenschaften
- 15. Was sind die MSBuild-Eigenschaften auf Projektebene für Delphi?
- 16. Zurückgeben eines Arrays in Specman
- 17. PHP-Funktion zwei Arrays zurückgeben
- 18. Sind Elementvariablen wie die Eigenschaften eines Objekts?
- 19. Was sind die Eigenschaften von Spaghetti Code?
- 20. Dekorateure, die Eigenschaften von dekorierten Objekten sind?
- 21. Was sind die verschiedenen Eigenschaften in System.DirectoryServices.DirectorySearcher.PropertiesToLoad
- 22. Was sind die besten Eigenschaften von Scala?
- 23. Sind generische Operatorüberladungen in .NET 4 zulässig?
- 24. Eigenschaften sind nicht alphabetisch
- 25. Sind C# Inline-Eigenschaften?
- 26. Generische abstrakte Builder-Eigenschaften benötigt Casting
- 27. Wie generische ID-Typ Eigenschaften erstellen?
- 28. Generische Klasse zu CSV (alle Eigenschaften)
- 29. Was sind die Nachteile beim Festlegen von String-Eigenschaften für Arrays?
- 30. Merge Hash mit Eigenschaften Arrays
Methoden erstellen zu erhalten/stellen Sie den Wert nicht wirklich etwas zu tun, um die Auswirkungen in der Begründung für die Regel beschrieben zu mildern. – Servy
Nie wirklich darüber nachgedacht. Ich habe immer ein Array zurückgegeben, wenn ich nicht wollte, dass meine interne Sammlung hinzugefügt oder entfernt wird. Vielleicht sollte ich ReadOnlyCollection verwenden. – TyCobb
@Servy: Obwohl es wahr genug ist, denken die meisten Programmierer ein bisschen, bevor sie ein Konstrukt wie GetValueT() [x] in einer Schleife verwenden. – RobinHood70