2009-04-05 5 views
0

Ich war für einige Informationen searcing, und ich eine Methode wie folgt gefunden:Wie kann ich eine Klasse zu einem Array machen?

public partial class Customer {   
    private string customerIDField; 

    private string companyNameField; 

    private string contactNameField; 

    private string contactTitleField; 

    private string addressField; 

    private string cityField; 

    private string regionField; 

    private string postalCodeField; 

    private string countryField; 

    private string phoneField; 

    private string faxField; 
    // Other properties 
} 

Dann wird der Codierer diese Klasse wie folgt verwendet. Wie?

private static Model.Customer[] BuildCustomers(SqlDataReader reader) 
{ 
    if (reader.HasRows) 
    { 
     List<Model.Customer> custs = new List<Model.Customer>(); 
     while (reader.Read()) 
     { 
      Model.Customer cust = new Model.Customer(); 
      cust.CustomerID = reader["CustomerID"].ToString(); 
      cust.CompanyName = reader["CompanyName"].ToString(); 
      cust.ContactName = reader["ContactName"].ToString(); 
      custs.Add(cust); 
     } 
     return custs.ToArray(); 
    } 
    return null; 
} 

Ich möchte wirklich lernen, wie man diese Coder "Customer -----> Model.Customer []" verwendet. Gibt es eine Methode, die das tut?

Antwort

2

Fragen Sie, wie Sie ein Customer Objekt in ein Array konvertieren können?

Es gibt ein paar Möglichkeiten, es zu tun - das Beispiel, das Sie im zweiten Teil des Codes zeigte eine List von Customers Zugabe aufgebaut, konvertiert dann die List in ein Array. Dies funktioniert gut, wenn Sie nicht wissen, wie viele Kunden Sie haben, Sie fügen die Liste hinzu und erstellen und gruppieren am Ende, und das Array hat die richtige Größe.

Wenn Sie nur ein customer Objekt haben könnten Sie auch customers mit einem Elemente namens ein Array erstellen und ein customer Objekt, um es wie folgt hinzu:

Model.Customer[] customers = new Model.Customer[1]; 
customers[0] = customer; 

oder ein noch kürzerer Weg:

Model.Customer[] customers = new Model.Customer[] {customer}; 
1

Ist Ihre Verwirrung darüber, wie die Methode ein Array zurückgibt?

Es ist nur mit List<T>.ToArray(). Die Liste wird jeweils einzeln aufgebaut, und am Ende wird ToArray() aufgerufen.

0

Ich bin nicht sicher, was Sie hier tun möchten.

Wollen Sie ein Array von Kunden? Oder möchten Sie auf die Eigenschaften in der Kundenklasse zugreifen, indem Sie eine Array-Typ-Syntax verwenden?

durch das Codebeispiel zu gehen (2. one)

der Code eine Liste der Kunden macht,

schafft einen einzigen Kunden, die über einen Datareader bestücken ist (dies die Datenbank Daten repersents, der Zugang erlaubt, über seinen Spaltenindex oder den Namen)

der neue cusomter wird

auf die Liste der Kunden hinzugefügt

schließlich die Liste in ein Array umgewandelt wird (als eine Liste (Generic) es um die Umwandlung zu einem Kunden unterstützt [] Witz h die Notwendigkeit des Gießens).

HTH Bones

1

wie Jason sagt, du bist der Rückkehr nur eine Reihe von Model.Customers aus der Liste <Model.Customer>. Es ist möglich, auf eine Klasse wie ein Array zuzugreifen, und das ist ein Indexer.

zum Beispiel:

class Foo 
{ 
    public string this [int index] 
    { 
      get { return new string; } 
    } 
} 

Dies ist dann wie folgt verwendet:

Foo foo = new Foo(); 
string s = foo[0]; 

Offensichtlich würden Sie wollen, etwas zu tun, um Foo einige Werte zu machen zurückzukehren je nach Index, aber das ist der einfachste Weg, es zu tun.

+0

Gibt es eine Spot-Antwort? Deine Lösung gibt mir eine Idee, aber nicht genau .... – Penguen

+0

Ich verstehe deine Frage nicht. Was meinst du mit einer "Spot-Antwort"? –

Verwandte Themen