2009-10-19 6 views
0

J'ai un type mis en place comme suitErreur d'initialisation en C#

class Program 
{ 
    static void Main() 
    { 
     IEnumerable<int> one = new int[] { 1, 2, 3, 4, 5, 6, 7 }; 
     IEnumerable<int> two = new int[] { 12, 34, 56, 7, 8 }; 
    MySet[] sets 
    = new MySet[] 
    { 
    new MySet{ MySetID =100, 
    MySubSet=new MySubSet{SubSet=new List<int>().AddRange(one), SubSetID=1212}}, 

    new MySet{ MySetID =101, 
    MySubSet=new MySubSet{SubSet=new List<int>().AddRange(two), SubSetID=1414}} 
    }; 

} 
    } 

class MySet 
{ 
    int mySetID; 
    MySubSet subset = new MySubSet(); 
    public int MySetID 
    { 
     get { return mySetID; } 
     set { mySetID = value; } 
    } 
    public MySubSet MySubSet 
    { 
     get { return subset; } 
     set { subset = value; } 
    } 
} 

class MySubSet 
{ 
    int subsetID; 
    List<int> subset = new List<int>(); 
    public List<int> SubSet 
    { 
     get{ return subset; } 
     set {subset = value;} 
    } 
    public int SubSetID 
    { 
     get { return subsetID; } 
     set { subsetID = value; } 
    } 
} 

Je reçois erreur

Cannot implicitly convert type 'void' to 'System.Collections.Generic.List<int>' 

dans la déclaration principale()

MySubSet=new MySubSet{SubSet=new List<int>().AddRange(one) 

Répondre

2

Changer votre SubSet=new List<int>().AddRange(one) pour SubSet=new List<int>(one)

+0

il est bien travaillé –

+0

désolé, il fonctionne bien –

0

Essayez de modifier SubSet=new List<int>().AddRange(one) à SubSet=new List<int>(one)

0

Parce que AddRange ne renvoie pas de liste, il ne renvoie rien. Utilisez la méthode Concat au lieu de AddRange.