2010-04-17 65 views
5

Mã dưới đây định nghĩa một lớp ChargeCustomer có chứa một mảng kiểu "khách hàng". Tôi muốn có thể tạo một đối tượng với 1 "khách hàng" hoặc 2 "khách hàng" dựa trên các tham số của hàm tạo. Đây có phải là cách đúng đắn để làm như vậy trong C#:Tạo một lớp với mảng đối tượng

public class ChargeCustomer 
{ 
    private Customer[] customers; 

    public ChargeCustomer(string aName, string bName, int charge) 
    { 
     customers = new Customer[2]; 
     customers[0] = new Customer(aName, charge); 
     customers[1] = new Customer(bName, charge); 
    } 

    public ChargeCustomer(string bName, int charge) 
    { 
     customers = new Customer[1]; 
     customers[0] = new Customer(bName, charge); 
    } 

}

Cảm ơn!

+0

'DropBox' có lấy từ 'Khách hàng' không? Nếu không, bạn không thể lưu nó trong mảng 'Customer'. – dtb

+0

đúng, tuy nhiên, bạn bị giới hạn chỉ có thể tạo 1 hoặc 2 khách hàng. – manuel

Trả lời

5

Lưu ý: Điều này giả định rằng DropBox là lỗi dán sai trong câu hỏi ban đầu.

Bạn có thể di chuyển những thứ xung quanh và có 1 nhà xây dựng sử dụng params cho bất kỳ số lượng tên, như thế này:

public class ChargeCustomer 
{ 
    private Customer[] customers; 

    public ChargeCustomer(int charge, params string[] names) 
    { 
    customers = new Customer[names.Length]; 
    for(int i = 0; i < names.Length; i++) { 
     customers[i] = new Customer(names[i], charge); 
    } 
    } 
} 

Sử dụng phương pháp này, bạn chỉ cần vượt qua cước đầu tiên và bất kỳ số lượng tên khách hàng, như thế này :.

new ChargeCustomer(20, "Bill", "Joe", "Ned", "Ted", "Monkey"); 

nó sẽ tạo ra một mảng kích thước chính xác và điền nó bằng cách sử dụng phí tương tự cho tất cả, và 1 khách hàng cho mỗi tên bởi Looping qua tên thông qua vào Tất cả những gì đang được nói, có lẽ là một Simp nhiều giải pháp tổng thể hơn cho vấn đề của bạn, nhưng không thay đổi bên ngoài lớp Customer (ngoài các lời gọi hàm tạo), đây sẽ là cách tiếp cận đơn giản nhất/thay đổi nhỏ nhất.

Các vấn đề liên quan