myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Welche Liste in .NET verwenden?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Welche Liste in .NET verwenden?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
mchrd mchrd ist männlich
myCSharp.de-Mitglied

avatar-229.gif


Dabei seit: 27.10.2018
Beiträge: 17
Entwicklungsumgebung: Visual Studio 2017, VS Code


mchrd ist offline

Welche Liste in .NET verwenden?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,

ich habe mal eine Frage zu der ich keine wirkliche Antwort gefunden haben. Folgendes Codebeispiel:

C#-Code:
ICollection test = new List<string>();
ICollection<string> test2 = new List<string>();
List<string> test3 = new List<string>();
IEnumerable<string> test4 = new List<string>();
IEnumerable test5 = new List<string>();

In welchen Fällen verwendet man was bzw. welche Vorteile hat es, wenn man sich z. B. auf ein Interface einschränkt anstelle immer einer List zurückzugeben (wie bei test3). Habt ihr ggf. reale Beispiele wo man was verwendet? Gibt es Performancevorteile/Speichervorteile etc.?

Ich hoffe, dass ich rüber bringen konnte was ich meine.

Danke für eure Hilfe!

LG
14.02.2019 23:39 Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.266
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zunächst mal passt der Titel leider nicht wirklich zur Frage.
Daher zuerst mal zum Inhalt:

Interfaces sind dazu da Gemeinsamkeiten abzudecken; so basiert in .NET fast jede Art von zB. Enumeration auf einem IEnumerable.
Unabhängig von Listen: es empfiehlt sich immer das Exposen von Interfaces statt einer konkreten Implementierung, wenn möglich.

Weiter:
Darüber hinaus bietet eben .NET verschiedene Arten von Listen an.
Natürlich gibt es Situationen, wo mehrere Listentypen passen - oder eben auch nur eine gewisse Art.
Das ist dann Aufgabe des Software Designs, das zu evaluieren bzw. zu definieren.
Man kann aber Deine Frage hier nicht mit "X hat immer Vorteile" beantworten - das kommt einfach ganz drauf an. Ein pauschales "da verwendet man immer X"; das gibt es leider nicht.
Sich über die Performance oder den Speicher Gedanken zu machen, ist nicht der erste Schritt für ein Software Design.

Tendentiell versucht man immer den größten gemeinsamen Nenner abzudecken.
Dabei beachtet man aber grundlegende Dinge; zB dass man Enumeratoren nicht mehrfach durchlaufen sollte; siehe auch  Zwischenmaterialisierung

Zum Titel:
var hat damit null zutun.
Var ist nur eine implizite Typdeklaration; da hilft ein kurzer Blick in die Doku. fröhlich

PS: ich habe das Thema von ICollection test bzw. var test in Welche Liste in .NET verwenden? geändert, damit der Titel dem Inhalt wenigstens etwas näher kommt.

PPS: auf das Code Beispiel bin ich hier nicht eingegangen, weil es kein Sinn macht bzw. hier völlig irrelevant ist.
Das hier ist ein Beispiel, bei dem quasi jede Liste passt; im Endeffekt beachtest Du bei Deinem Beispiel aber null den Zweck - daher kann man auch nicht sagen, dass Typ A besser passt oder B.
Du deklarierst ja nur. ;-)
15.02.2019 01:01 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 10 Monate.
Der letzte Beitrag ist älter als 10 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 16.12.2019 08:22