ฉันจะเริ่มต้นรายการ C # ในบรรทัดเดียวกับที่ฉันประกาศได้อย่างไร (ตัวอย่างการรวบรวมสตริงที่ไม่สามารถคำนวณได้ของ IE)


108

ฉันกำลังเขียนรหัสทดสอบของฉันและฉันไม่ต้องการเขียน:

List<string> nameslist = new List<string>();
nameslist.Add("one");
nameslist.Add("two");
nameslist.Add("three");

ฉันชอบที่จะเขียน

List<string> nameslist = new List<string>({"one", "two", "three"});

อย่างไรก็ตาม {"one", "two", "three"} ไม่ใช่ "IEnumerable string Collection" ฉันจะเริ่มต้นสิ่งนี้ในบรรทัดเดียวโดยใช้ IEnumerable string Collection "ได้อย่างไร

คำตอบ:


169
var list = new List<string> { "One", "Two", "Three" };

โดยพื้นฐานแล้วไวยากรณ์คือ:

new List<Type> { Instance1, Instance2, Instance3 };

ซึ่งแปลโดยคอมไพเลอร์เป็น

List<string> list = new List<string>();
list.Add("One");
list.Add("Two");
list.Add("Three");

ฉันชอบวิธีที่ไม่มีวงเล็บนี้รุ่น c # เริ่มต้นด้วยอะไร
SilverbackNet

9
มันไม่ได้ค่อนข้างแปลเป็นว่าอย่างน้อยไม่ได้โดยทั่วไป การกำหนดให้กับตัวแปรจะเกิดขึ้นหลังจากที่Addมีการเรียกใช้ทั้งหมด- เหมือนกับว่ามันใช้ตัวแปรชั่วคราวโดยlist = tmp;ในตอนท้าย สิ่งนี้อาจมีความสำคัญหากคุณกำหนดค่าของตัวแปรใหม่
Jon Skeet

คุณสมบัติอัตโนมัติและ Object Initialisers ถูกนำมาใช้กับ. NET 3 ฉันเชื่อว่ามันเป็นเวอร์ชัน Framework เดียวกันเป็นเพียงคอมไพเลอร์ที่อัปเดตเพื่อรองรับ LINQ
Matthew Abbott

@ จอนไชโยฉันไม่เคยรู้จักส่วนนั้นเลย : D
Matthew Abbott

@Jon Skeet: "... นี่อาจมีความสำคัญหากคุณกำหนดค่าของตัวแปรใหม่" คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับคำพูดนี้ได้ไหม
Tony

17

เปลี่ยนรหัสเป็น

List<string> nameslist = new List<string> {"one", "two", "three"};

หรือ

List<string> nameslist = new List<string>(new[] {"one", "two", "three"});

อะไรคือจุดประสงค์ของการใช้บรรทัดที่สอง "List <string> nameslist = new List <string> (new [] {" one "," two "," three "});" เราจะใช้ได้เมื่อใด นอกจากนี้ความหมายของ "new [] {... }" ในไวยากรณ์ที่สองคืออะไรทำไมต้องใช้คำหลักใหม่ร่วมกับวงเล็บ [] ???
Tony




3

ขึ้นอยู่กับเวอร์ชันของ C # ที่คุณใช้ตั้งแต่เวอร์ชัน 3.0 เป็นต้นไปคุณสามารถใช้ ...

List<string> nameslist = new List<string> { "one", "two", "three" };


1

นี่เป็นวิธีหนึ่ง

List<int> list = new List<int>{ 1, 2, 3, 4, 5 };

นี่เป็นอีกวิธีหนึ่ง

List<int> list2 = new List<int>();

list2.Add(1);

list2.Add(2);

เช่นเดียวกันกับสตริง

เช่น:

List<string> list3 = new List<string> { "Hello", "World" };
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.