2016-07-25 9 views
0

私がここで間違っていることを理解するのを助けることができるかどうか疑問に思っていました。私は パラメータ化されたクラスのコンストラクタを書く方法

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) 
    { 

    } 

    // ... 

} 

を持っており、私のコンパイラが (T[] arr)を好きされていないと言っている

無効なトークン「(」クラス、構造体、またはインターフェイス宣言

に正しい構文は何ですかここに?

答えて

1

コンストラクタから型パラメータを削除します。それは暗示されています:

public SingleLinkedList(T[] arr) 
{ 
} 
1

コンストラクタ定義に<T>を追加しないでください。

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

} 
2

ジェネリック型パラメータを削除:

public SingleLinkedList (T[] arr) 
{ 

} 

型パラメータをクラス宣言ではなく、コンストラクタ宣言の一部の一部です。コンストラクタのパラメータ型は、クラスで使用される型になります。

関連する問題