2016-06-16 8 views
0

Ich mache Test-Code, um zu versuchen, dies zu hacken. Ich möchte ein Array meiner Klasse zuweisen/instanziieren. Ich möchte es so gut ich kann initialisieren, einschließlich der Zuordnung/Instantiierung meiner Klasse MyClass() {_ i ++}. Im Moment bin ich dabei zwei Operationen,Wie überlade ich neue MyClass Classy = neue MyClass [n] mit meinen Konstruktoren?

MyClass[] ClassyChassis=new MyClass[4]; 
for(int i=0;i<4;i++) ClassyChassis[i]=new MyClass(); 

Ich kann Sachen tun in MyClass Konstruktor MyClass(). Aber ich möchte jedes Array Mitglied Kenntnis geben, wo sie in dem Array ist, Standardwerte zuweisen, etc. etc.

Warum kann ich nicht tun dies durch Überlastung MyClass [] vielleicht mit

MyClass ClassyChassis=new MyClass[5](); 

MyClass[5](initalizer0,initalizer1,initalier2); 

Antwort

1

MyClass [] ist keine Klasse an sich, es ist ein Array vom Typ MyClass. Sie können keinen Konstruktor für den integrierten Array-Typ hinzufügen.

Eine Factory-Methode würde funktionieren. Erstellen Sie eine Factory-Klasse und fügen Sie eine Methode namens CreateMyClassCollection (int-Nummer, param1, param2, param3)

public static class MyClassFactory 
{ 
    public static List<MyClass> CreateMyClassCollection(int number, param1, param2, param3) 
    { 
     List<MyClass> items = new List<MyClass>(); 
     for (int counter=0;counter<number;counter++) 
     { 
      items.Add(new MyClass(param1,param2,param3); 
     } 
     return items; 
    } 

} 
0

die Klasse Lassen definiert zwei Eigenschaften haben Namen und die ID,

public class MyClass 
{ 
    public int SomeID { get; set; } 
    public string someName { get; set; } 
} 

Sie können erklären und initialisieren die Klasse Array als wie folgt aus:

MyClass[] MyClassArray = { new MyClass(){SomeID=1,someName="aName"}, 
          new MyClass(){SomeID=10,someName="bName"}, 
          new MyClass(){SomeID=11,someName="cName"}, 
          new MyClass(){SomeID=12,someName="dName"} 
          }; 

oder sonst können Sie eine Liste der MyClass

verwenden
List<MyClass> MyClassList = new List<MyClass>(){ new MyClass(){SomeID=1,someName="aName"}, 
               new MyClass(){SomeID=10,someName="bName"}, 
               new MyClass(){SomeID=11,someName="cName"}, 
               new MyClass(){SomeID=12,someName="dName"} 
               }; 
0
MyClass[] BuildArray(int size, string param1, string param2, string param3) 
    { 
     return Enumerable.Range(1, size).Select(i => 
      new MyClass {Property1 = param1, Property2 = param2, Property3 = param3}) 
      .ToArray(); 
    } 

Es soll ein Begriff sein, etwas zu tun, die nicht Linq erfordern und zwanghaft, nur um die Verwendung von Linq mit Linq. Wie immer wir das nennen würden, das ist es.

Verwandte Themen