ฉันมีวัตถุนี้:
IEnumerable<string> m_oEnum = null;
และฉันต้องการเริ่มต้น พยายามด้วย
IEnumerable<string> m_oEnum = new IEnumerable<string>() { "1", "2", "3"};
แต่มันขึ้นว่า "IEnumerable ไม่มีเมธอดในการเพิ่มสตริงคิดยังไงก็ได้ขอบคุณ
ฉันมีวัตถุนี้:
IEnumerable<string> m_oEnum = null;
และฉันต้องการเริ่มต้น พยายามด้วย
IEnumerable<string> m_oEnum = new IEnumerable<string>() { "1", "2", "3"};
แต่มันขึ้นว่า "IEnumerable ไม่มีเมธอดในการเพิ่มสตริงคิดยังไงก็ได้ขอบคุณ
คำตอบ:
ตกลงเพิ่มคำตอบที่ระบุไว้ที่คุณอาจจะยังมองหา
IEnumerable<string> m_oEnum = Enumerable.Empty<string>();
หรือ
IEnumerable<string> m_oEnum = new string[]{};
IEnumerable<T>เป็นอินเทอร์เฟซ คุณต้องเริ่มต้นด้วยประเภทคอนกรีต (ที่ใช้IEnumerable<T>) ตัวอย่าง:
IEnumerable<string> m_oEnum = new List<string>() { "1", "2", "3"};
ในขณะที่string[]ใช้ IEnumerable
IEnumerable<string> m_oEnum = new string[] {"1","2","3"}
IEnumerable เป็นเพียงอินเทอร์เฟซดังนั้นจึงไม่สามารถสร้างอินสแตนซ์ได้โดยตรง
คุณต้องสร้างคลาสที่เป็นรูปธรรม (เช่น a List)
IEnumerable<string> m_oEnum = new List<string>() { "1", "2", "3" };
IEnumerableแล้วคุณจะสามารถผ่านนี้เพื่ออะไรคาดหวังว่า
public static IEnumerable<string> GetData()
{
yield return "1";
yield return "2";
yield return "3";
}
IEnumerable<string> m_oEnum = GetData();
คุณไม่สามารถสร้างอินเทอร์เฟซอินเทอร์เฟซได้ - คุณต้องจัดเตรียมการใช้งาน IE ที่เป็นรูปธรรมอย่างเป็นรูปธรรม
คุณสามารถสร้างวิธีการคงที่ซึ่งจะส่งคืน IEnumerable ที่ต้องการดังนี้:
public static IEnumerable<T> CreateEnumerable<T>(params T[] values) =>
values;
//And then use it
IEnumerable<string> myStrings = CreateEnumerable("first item", "second item");//etc..
อีกวิธีหนึ่งเพียงแค่ทำ:
IEnumerable<string> myStrings = new []{ "first item", "second item"};
IEnumerable เป็นอินเทอร์เฟซแทนที่จะมองหาวิธีสร้างอินสแตนซ์อินเทอร์เฟซให้สร้างการใช้งานที่ตรงกับอินเทอร์เฟซ: สร้างรายการหรืออาร์เรย์
IEnumerable<string> myStrings = new [] { "first item", "second item" };
IEnumerable<string> myStrings = new List<string> { "first item", "second item" };