2009-03-25 3 views
0

permet de dire que j'ai cette classe:C#: add objet initialiseur

class MyList<T> 
{ 

} 

Que dois-je faire pour cette classe, pour rendre possible suivante:

var list = new MyList<int> {1, 2, 3, 4}; 

Répondre

3

Avoir une méthode Add et mettre en œuvre IEnumerable.

class MyList<T> : IEnumerable 
{ 
    public void Add(T t) 
    { 

    } 

    public IEnumerator GetEnumerator() 
    { 
    //... 
    } 
} 

public void T() 
{ 
    MyList<int> a = new MyList<int>{1,2,3}; 
} 
+0

+1, vous voudrez peut-être ajouter que doit prendre un paramètre du type dans la collection. – JaredPar

+0

En fait, ce n'est pas vrai. Ce serait bizarre, mais votre méthode Add n'a pas besoin de prendre le type T. Il pourrait être: public void Ajouter (string t, char c) {} et vous pouvez appeler MyList a = new MyList { {"A", "c"}, {"B", "d"}}; – RossFabricant

1

mise en œuvre ICollection sur MyList laissera le travail de syntaxe initalizer

class MyList<T> : ICollection<T> 
{ 
} 

Bien que le strict minimum serait:

public class myList<T> : IEnumerable<T> 
{ 
    public void Add(T val) 
    { 
    } 

    public IEnumerator<T> GetEnumerator() 
    { 
    } 

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() 
    { 
    } 
} 
0
ICollection<T> is also good.