2009-04-05 4 views
0

я searcing какой-то информации, и я нашел способ, как это:Как я могу сделать класс в массив?

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 
} 

Затем кодер использовал этот класс, как это. Как?

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; 
} 

Я действительно хочу узнать, как этот кодер использует «Customer -----> Model.Customer []». Есть ли способ, который это делает?

ответ

2

Вы спрашиваете, как преобразовать объект Customer в массив?

Есть несколько способов сделать это - пример вы показали во второй части коды создал List, добавив Customers, затем преобразовал List в массив. Это хорошо работает, когда вы не знаете, сколько у вас клиентов, вы продолжаете добавлять в список и создавать и массивы в конце, и массив будет иметь правильный размер.

Если есть только один customer объект, который вы могли бы также создать массив под названием customers с одним элементом и добавить customer объект к нему, как это:

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

или, еще более короткий путь:

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

Является ли ваше замешательство в том, как метод возвращает массив?

Это просто используется List<T>.ToArray(). Список создается одним клиентом за раз, а затем ToArray() вызывается в конце.

0

Я не уверен, что вы хотели бы сделать здесь.

Вы хотите получить массив клиентов? Или вы хотите получить доступ к свойствам в классе клиентов с использованием синтаксиса типа массива?

пройти через образец кода (второй один)

код делает список Клиента,

создает один клиент, который заполняется через DataReader (это repersents данные базы данных, которая позволяет получить доступ через его индекс столбца или имя)

новый cusomter добавляется в список клиентов

наконец список преобразуется в массив (как св List (Generic) он поддерживает преобразование Заказчика [] остроумие h) необходимость литья).

HTH Кости

1

Как Джейсон говорит, вы просто возвращая массив Model.Customers из списка <Model.Customer>. Можно получить доступ к классу, например массиву, и использовать индекс.

, например:

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

Затем он используется так:

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

Очевидно, что вы хотели бы сделать что-то, чтобы сделать Foo вернуть несколько значений в зависимости от индекса, но это основной способ сделать это.

+0

есть ли какой-либо ответ? Ваше решение дает мне представление, но не совсем точно. – Penguen

+0

Я не понимаю ваш вопрос. Что вы подразумеваете под «точным ответом»? –