2014-04-17 23 views
6

Tôi tự hỏi nếu có cách nào để viết đoạn mã sau ngắn hơn rất nhiều ...Thêm nhiều biến vào một danh sách

public PictureBox pb1; 
public PictureBox pb2; 
public PictureBox pb3; 
..... 
public PictureBox pb50; 

Và sau đó, là có cách nào để thêm tất cả các biến vào một danh sách, mà không cần phải thực hiện lại cùng một mã xấu xí nữa.

listPB.add(pb1); listPB.add(pb2);...... ListPB.add(pb50); 

Phương pháp tôi sử dụng thực sự câm và tôi hy vọng rằng có một số cách khác để thực hiện. Cảm ơn đã giúp đỡ!

+0

lý do tại sao bạn tạo 50 trường hợp riêng biệt, bạn có thể sử dụng danh sách và chỉ số của nó để có được ví dụ cụ thể –

Trả lời

8

Bạn có thể làm một bộ sưu tập ad-hoc như thế này:

PictureBox[] pictureBoxen = {pb1, pb2, pb3, ..., pb50}; 

và sau đó bạn có thể sử dụng AddRange trên danh sách để thêm chúng

listPB.AddRange(pictureBoxen); 

Hoặc nếu listPB được tạo ra trên nơi đó, và chỉ chứa các biến đó, bạn có thể làm:

List<PictureBox> listPB = new List<PictureBox>{pb1, pb2, ..., pb50}; 

Lưu ý rằng loại cú pháp này chỉ được giới thiệu trong C# 3, trong năm 2008, do đó, bạn có thể giả sử rằng bạn đang sử dụng nó hoặc cao hơn.

Đối với C# 2 trở xuống, lặp lại là tốt nhất tôi có thể nghĩ ra.

2

Sử dụng một vòng lặp

for(int i = 0; i < 10; i++) 
{ 
    PictureBox p = new PictureBox(); 
    listPb.Add(p); 
} 
2

Sử dụng này:

public PictureBox pb1,pb2,pb3,pb4....,pb50; 

sau đó

List<PictureBox> listPB = new List<PictureBox>{pb1, pb2, ..., pb50}; 
1
List<PictureBox> list = new List<PictureBox>(); 
    for(int i = 0; i < 50; i++) 
    { 
    list.add(new PictureBox{ 
     //set properties here.. 
    }); 
    } 
1

Nếu danh sách là của bạn để khởi tạo, tôi sẽ sử dụng mảng trong đầu :

PictureBox[] pictures = new PictureBox[50]; 
for (int i = 0; i < pictures.Length; i++) 
{ 
    pictures[i] = new PictureBox(); 

    // Do something else 
} 

Nếu 50 phiên bản được tạo theo cách khác, tôi khuyên bạn nên sử dụng Notepad ++ Find and Replace bằng Regex.

1

bạn có thể làm điều này:

List<PictureBox> listPicture = new List<PictureBox>() { pb1, pb2, pb3, pb4, pb5, etc... }; 
Các vấn đề liên quan