Câu trả lời:
.NET 2.0 có ConvertAll
phương thức mà bạn có thể chuyển vào hàm chuyển đổi:
List<int> l1 = new List<int>(new int[] { 1, 2, 3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });
Cập nhật cho năm 2010
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
x => x.ToString()
được biên dịch theo cùng loại IL như delegate(int x) { return x.ToString(); }
trong trường hợp này, điều quan trọng là phải có một trình biên dịch C # (phiên bản C #) biết đó =>
là gì . Khuôn khổ và thời gian chạy (phiên bản .NET) không cần tính năng đặc biệt cho việc này, vì vậy .NET 2.0 ở đây là tốt.
<string>
và nó vẫn hoạt động. Làm cho nó chỉl1.ConvertAll(x => x.ToString());
C # 2.0 có làm được List<T>.Convert
không? Nếu vậy, tôi nghĩ bạn nên sử dụng điều đó với một đại biểu:
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Convert(delegate (int i) { return i.ToString(); });
Một cái gì đó dọc theo những dòng đó.
Ủng hộ câu trả lời của Glenn, đó có thể là mã chính xác ;-)
Bạn sẽ không thể ép kiểu trực tiếp vì không có kiểu truyền rõ ràng hoặc ẩn nào tồn tại từ int sang chuỗi, nó sẽ phải là một phương thức liên quan đến .ToString () chẳng hạn như: -
foreach (int i in intList) stringList.Add(i.ToString());
Chỉnh sửa - hoặc như những người khác đã chỉ ra khá tuyệt vời, hãy sử dụng intList.ConvertAll (Delegate (int i) {return i.ToString ();});, tuy nhiên rõ ràng bạn vẫn phải sử dụng .ToString () và đó là một chuyển đổi chứ không phải một dàn diễn viên.
int
được chuyển đổi hoàn toàn hoặc rõ ràng sang string
, điều đó không có nghĩa là IE có chuyển đổi List<int>
ngầm định hoặc rõ ràng sang List<string>
.
Bạn phải xây dựng một danh sách mới. Các biểu diễn bit cơ bản của List<int>
và List<string>
hoàn toàn không tương thích - ví dụ: trên nền tảng 64 bit, các thành viên riêng lẻ thậm chí không có cùng kích thước.
Về mặt lý thuyết, có thể coi a List<string>
là a List<object>
- điều này đưa bạn vào thế giới thú vị của hiệp phương sai và phương sai, và hiện không được hỗ trợ bởi C # hoặc VB.NET.
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
thay thế kết quả tham số và listOfInt thành tham số của bạn