C# Codebedeutung

ronaldo84

Erfahrenes Mitglied
Hallo Gemeinde,

ich hätte mla eine Frage zu einem CodeSnippet in C#.
Kann mir jemand erklären was folgende Zeile bedeutet:
Code:
    public SortableBindingList(IEnumerable<T> enumeration) : base(new List<T>(enumeration))
    {
    }
Also was sie bedeutet ist mir relativ klar. Die Klasse wird abgeleitet und ruft von der Basisklasse den Konstruktor mit einer Enumeration auf. Soweit so gut. Leider kommt es bei mir ab und zu vor das die Enumeration Null ist und dann wirft er mir eine Exception. Wie kann ich diese abfangen? Am liebsten wäre es mir natürlich wenn ich den Konstruktor der Basisklasse aus den {} aufrufen könnte. Weiß aber leide rnicht wie das geht.

Vielleicht könnt ihr mir ja helfen.

Vielen Dank

€:
Ich leite von der BindingList<T> ab
Code:
 public class SortableBindingList<T> : BindingList<T>

Wenn ich die Zeile in
Code:
public SortableBindingList(IEnumerable<T> enumeration)
{
	base.New(new List<T>(enumeration));
aufsplitte, sagt er mir leider:
System.ComponentModel.BindingList<T>
 
Zuletzt bearbeitet:
da hast du eher einen denkfehler
warum übergibst du ihm ein nicht instanziiertes Objekt?

ansonsten könntest du eventuell so prüfen ob null oder nicht
Code:
public SortableBindingList(IEnumerable<T> enumeration) 
   : base((enumeration != null ? enumeration : new List<T>()))
{
}
wichtig ist zu beachten:
Code:
(enumeration != null ? enumeration : new List<T>())
wenn enumeration ungleich null wird enumeration übergeben, ansonsten wird eine neue leere Liste erstellt und diese übergeben.
Code:
(wenn ? dann : sonst)
ähnlich if Bedingung.

Leider kann ich dir jetzt nicht sagen wie man solch einen vergleich nennt, aber vielleicht weiß es ja jemand anders.
 
Leider kann ich dir jetzt nicht sagen wie man solch einen vergleich nennt, aber vielleicht weiß es ja jemand anders.

Hat mich gerade auch mal interessiert und bin dann mal auf in die MSDN Library. Dort steht ja nicht viel dazu ;)

Zitat: Der bedingte Operator ( ?: ) gibt abhängig vom Wert eines booleschen Ausdrucks einen von zwei Werten zurück.

Also ist das einfach ein bedingter Operator, fertig!

(Irgendwie zu einfach, oder?! *grübel*)
 
Zuletzt bearbeitet:
Hallo,

dieser Ausdruck:
C#:
(enumeration != null ? enumeration : new List<T>())
geht sorgar noch kürzer:
HTML:
(enumeration ?? new List<T>())

Dieser Operator bewirkt bei allen Nullable Types die Rückgabe des linken Operanden, wenn dieser nicht null ist. Ansonsten wird der rechte Operand zurückgegeben.

Gruß
MCoder

P.S.: Wie gibt man eigentlich innerhalb der csharp-Tags zwei Fragezeichen hintereinander ein? Ich hab fast die Krise gekriegt ...
 
Zuletzt bearbeitet:
ähnlich if Bedingung.

Leider kann ich dir jetzt nicht sagen wie man solch einen vergleich nennt, aber vielleicht weiß es ja jemand anders.

Sers,
auch auf die Gefahr hin mich voll zu plamieren!!
ps. war mein erster Beitrag also net schimpfen wenn da was net stimmt:)

Auf galileo open books c# steht
"Der ?:-Operator gibt einen von zwei Werten in Abhängigkeit von einem dritten zurück. Er ist eine einfache Variante der if-Bedingungsprüfung."
 

Neue Beiträge

Zurück