2009-06-24 35 views
2

任何人都可以告訴我如何存儲和返回字符串列表。如何返回字符串列表中的c#

有人問我,是因爲我已經寫了返回字符串的集合函數,我

要準備一個COM對於一個需要消耗的是COM(獲取返回的列表)在

vC++其中我可以使用該字符串列表擴展一些功能。

我希望thius將會一目瞭然......

由於提前

+0

請提供更多資訊 - 商店永久奧德只是「建立一個列表/返回該列表「? 「返回」就像方法的結果一樣? – 2009-06-24 07:18:33

+4

真的不清楚你的意思;要麼這是簡單的,要麼是看似深刻的,取決於你的意圖... – 2009-06-24 07:18:36

+0

更多輸入請, 你想實現什麼? 僞代碼可能有幫助 – 2009-06-24 07:18:49

回答

11

List<string>或字符串[]是最好的選擇。

這裏是返回字符串列表的樣品的方法:

public static List<string> GetCities() 
{ 
    List<string> cities = new List<string>(); 
    cities.Add("Istanbul"); 
    cities.Add("Athens"); 
    cities.Add("Sofia"); 
    return cities; 
} 
3

可以存儲字符串作爲陣列的固定列表:

string[] myStrings = {"Hello", "World"}; 

或動態列表作爲List<string>

List<string> myStrings = new List<string>(); 
myStrings.Add("Hello"); 
myStrings.Add("World"); 
3

在C#中,您可以簡單地返回List<string>,但您可能想要ret嗯IEnumerable<string>相反,因爲它允許惰性評估。

0
public static IList<string> GetStrings() 
{ 
    foreach(var item in GetStringItems()) 
    yield return item; 
} 
2

有很多方法來表示字符串在.NET中的列表,列表<串>是最光滑的。但是,你不能這樣回COM,因爲:

  1. COM不理解.NET泛型

  2. 的FxCop會告訴你,這是不好的做法,返回內部實現的東西(名單)而不是抽象接口(IList/IEnumerable)。

除非你想進入真正可怕的變異的SafeArray對象(不推薦),你需要創建一個「集合」對象,這樣你的COM客戶可以枚舉的字符串。

像這樣的東西(編譯沒有 - 這僅僅是讓你開始爲例):

[COMVisible(true)] 
public class CollectionOfStrings 
{ 
    IEnumerator<string> m_enum; 
    int m_count; 

    public CollectionOfStrings(IEnumerable<string> list) 
    { 
    m_enum = list.GetEnumerator(); 
    m_count = list.Count; 
    } 

    public int HowMany() { return m_count; } 

    public bool MoveNext() { return m_enum.MoveNext(); } 

    public string GetCurrent() { return m_enum.Current; } 
} 

(見http://msdn.microsoft.com/en-us/library/bb352856.aspx for more help

相關問題