วิธีที่รวดเร็วในการสร้างรายการค่าใน C #?


108

ฉันกำลังมองหาวิธีที่รวดเร็วในการสร้างรายการค่าใน C # ใน Java ฉันมักใช้ตัวอย่างด้านล่าง:

List<String> l = Arrays.asList("test1","test2","test3");

C # มีค่าเท่ากันหรือไม่นอกเหนือจากที่ชัดเจนด้านล่าง

IList<string> l = new List<string>(new string[] {"test1","test2","test3"});

คำตอบ:



19

หากคุณต้องการลดความยุ่งเหยิงให้พิจารณา

var lst = new List<string> { "foo", "bar" };

สิ่งนี้ใช้คุณสมบัติสองประการของ C # 3.0: type inference ( varคีย์เวิร์ด) และ collection initializer สำหรับรายการ

หรือหากคุณสามารถสร้างอาร์เรย์ได้ก็ยิ่งสั้นลง (โดยจำนวนเล็กน้อย):

var arr = new [] { "foo", "bar" };

2
โดยทั่วไปฉันจะไม่เลือกโครงสร้างข้อมูลของฉันโดยขึ้นอยู่กับว่าตัวใดใช้อักขระน้อยในการเริ่มต้น ...
Harrichael

1
@Harrichael Right และไม่ใช่ฉัน แต่ถ้าคุณไม่ต้องการรายชื่อก็ไม่มีเหตุผลที่จะใช้
Konrad Rudolph

10

ใน C # 3 คุณสามารถทำได้:

IList<string> l = new List<string> { "test1", "test2", "test3" };

สิ่งนี้ใช้ไวยากรณ์ตัวเริ่มต้นคอลเลคชันใหม่ใน C # 3

ใน C # 2 ฉันจะใช้ตัวเลือกที่สองของคุณ


Nitpick: collection initializer ไม่ใช่ object initializer
Timwi




3

คุณสามารถทำได้ด้วย

var list = new List<string>{ "foo", "bar" };

ต่อไปนี้เป็นอินสแตนซ์ทั่วไปอื่น ๆ ของโครงสร้างข้อมูลทั่วไปอื่น ๆ :

พจนานุกรม

var dictionary = new Dictionary<string, string> 
{
    { "texas",   "TX" },
    { "utah",    "UT" },
    { "florida", "FL" }
};

รายการอาร์เรย์

var array = new string[] { "foo", "bar" };

คิว

var queque = new Queue<int>(new[] { 1, 2, 3 });

ซ้อนกัน

var queque = new Stack<int>(new[] { 1, 2, 3 });

ดังที่คุณเห็นในกรณีส่วนใหญ่เป็นเพียงการเพิ่มค่าในวงเล็บปีกกาหรือสร้างอินสแตนซ์อาร์เรย์ใหม่ตามด้วยวงเล็บปีกกาและค่า


1

คุณสามารถสร้างตัวช่วยทั่วไปวิธีการคงที่เพื่อสร้างรายการ:

internal static class List
{
    public static List<T> Of<T>(params T[] args)
    {
        return new List<T>(args);
    }
}

จากนั้นการใช้งานมีขนาดกะทัดรัดมาก:

List.Of("test1", "test2", "test3")

1

หากคุณต้องการสร้างรายการที่พิมพ์ด้วยค่านี่คือไวยากรณ์

สมมติว่าเป็นชั้นเรียนของนักเรียนเช่น

public class Student {
   public int StudentID { get; set; }
   public string StudentName { get; set; }
 }   

คุณสามารถสร้างรายการดังนี้:

IList<Student> studentList = new List<Student>() { 
                new Student(){ StudentID=1, StudentName="Bill"},
                new Student(){ StudentID=2, StudentName="Steve"},
                new Student(){ StudentID=3, StudentName="Ram"},
                new Student(){ StudentID=1, StudentName="Moin"}
            };

คุณไม่จำเป็นต้อง()หลังจากและnew List<Student> new Student
schlingel

-5

รายการค่าอย่างรวดเร็ว? หรือแม้แต่รายการสิ่งของ!

ฉันเพิ่งเริ่มใช้ภาษา C # แต่ฉันชอบใช้

  • Hashtable
  • Arraylist
  • ตารางข้อมูล
  • ชุดข้อมูล

เป็นต้น

มีเพียงหลายวิธีในการจัดเก็บสินค้า

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