แปลงอาร์เรย์ของสตริงเป็น List <string>


162

ผมเคยเห็นตัวอย่างของการกระทำนี้ใช้.ToList()กับชนิดอาร์เรย์นี้น่าจะใช้ได้เฉพาะในสุทธิ 3.5 ขึ้นไป ฉันทำงานกับ. NET Framework 2.0 ในโครงการ ASP.NET ที่ไม่สามารถอัปเกรดได้ในขณะนี้ดังนั้นฉันสงสัยว่า: มีวิธีแก้ไขปัญหาอื่นหรือไม่ อันที่งดงามกว่าการวนลูปผ่านอาร์เรย์และเพิ่มแต่ละองค์ประกอบในรายการนี้ (ซึ่งไม่มีปัญหาฉันแค่สงสัยว่ามีทางออกที่ดีกว่าสำหรับการเรียนรู้วัตถุประสงค์) หรือไม่

string[] arr = { "Alpha", "Beta", "Gamma" };

List<string> openItems = new List<string>();

foreach (string arrItem in arr)
{
    openItems.Add(arrItem);
}

ถ้าฉันต้องทำอย่างนี้มีวิธีการจัดสรรอาเรย์ที่เอ้อระเหยจากหน่วยความจำหลังจากที่ฉันคัดลอกมันไปไว้ในรายการหรือไม่?


1
ไม่ต้องกังวลเกี่ยวกับการล้างข้อมูลของคุณarrตัวเก็บขยะจะทำงานได้ดีกว่าที่คุณทำ
Mike Christensen

37
คุณโดยเฉพาะ และฉัน. ที่จริงแล้วฉันคิดว่ามีเพียง Jon Skeet เท่านั้นที่ได้รับอนุญาตให้ทำการเก็บขยะของเขาเอง
Mike Christensen

@ ไมค์คริสเตนเซนไม่สามารถต่อต้านการปฏิวัติสำหรับความคิดเห็น Jon Skeet lol
Ctrl S

คำตอบ:



26

จาก. Net 3.5 คุณสามารถใช้วิธีการขยาย LINQ ที่ (บางครั้ง) ทำให้การไหลของโค้ดดีขึ้นเล็กน้อย

การใช้งานมีลักษณะเช่นนี้:

using System.Linq; 

// ...

public void My()
{
    var myArray = new[] { "abc", "123", "zyx" };
    List<string> myList = myArray.ToList();
}

PS นอกจากนี้ยังมีToArray()วิธีการที่ทำงานในวิธีอื่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.