2016-07-25 5 views
0

Ich fragte mich, ob Sie mir helfen könnten herauszufinden, was ich hier falsch mache. Ich habeWie schreibe ich einen Konstruktor für eine parametrisierte Klasse

public class SingleLinkedList<T> where T : IComparable 
{ 
    private class Node 
    { 
     public T Val; 
     public Node Next; 
    } 

    private Node _root = null; 

    /// <summary> 
    /// Initialize list from array 
    /// </summary> 
    /// <typeparam name="T"></typeparam> 
    public SingleLinkedList<T> (T[] arr) 
    { 

    } 

    // ... 

} 

und mein Compiler mögen nicht die (T[] arr) und sagt

Ungültige Token '(' in Klasse, Struktur oder Interface-Deklaration

Was ist die korrekte Syntax hier?

Antwort

1

Entfernen Sie den Typ Parameter aus dem Konstruktor, es ist implizit:

public SingleLinkedList(T[] arr) 
{ 
} 
1

Sie sollten <T> nicht zu Ihrer Konstruktordefinition hinzufügen.

/// <summary> 
/// Initialize list from array 
/// </summary> 
/// <typeparam name="T"></typeparam> 
public SingleLinkedList(T[] arr) 
{ 

} 
2

Entfernen Sie den generischen Typparameter:

public SingleLinkedList (T[] arr) 
{ 

} 

Der Typ-Parameter Teil der Klassendeklaration, die nicht Teil der Konstruktor-Deklaration ist. Der Parametertyp des Konstruktors ist der für die Klasse verwendete Typ.