任何人都可以告訴我如何存儲和返回字符串列表。如何返回字符串列表中的c#
有人問我,是因爲我已經寫了返回字符串的集合函數,我
要準備一個COM對於一個需要消耗的是COM(獲取返回的列表)在
vC++其中我可以使用該字符串列表擴展一些功能。
我希望thius將會一目瞭然......
由於提前
任何人都可以告訴我如何存儲和返回字符串列表。如何返回字符串列表中的c#
有人問我,是因爲我已經寫了返回字符串的集合函數,我
要準備一個COM對於一個需要消耗的是COM(獲取返回的列表)在
vC++其中我可以使用該字符串列表擴展一些功能。
我希望thius將會一目瞭然......
由於提前
List<string>或字符串[]是最好的選擇。
這裏是返回字符串列表的樣品的方法:
public static List<string> GetCities()
{
List<string> cities = new List<string>();
cities.Add("Istanbul");
cities.Add("Athens");
cities.Add("Sofia");
return cities;
}
可以存儲字符串作爲陣列的固定列表:
string[] myStrings = {"Hello", "World"};
或動態列表作爲List<string>
:
List<string> myStrings = new List<string>();
myStrings.Add("Hello");
myStrings.Add("World");
在C#中,您可以簡單地返回List<string>
,但您可能想要ret嗯IEnumerable<string>
相反,因爲它允許惰性評估。
昨天你問過如何通過COM interop來做到這一點!爲什麼退一步?
How to return a collection of strings from C# to C++ via COM interop
public static IList<string> GetStrings()
{
foreach(var item in GetStringItems())
yield return item;
}
有很多方法來表示字符串在.NET中的列表,列表<串>是最光滑的。但是,你不能這樣回COM,因爲:
COM不理解.NET泛型
的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)
請提供更多資訊 - 商店永久奧德只是「建立一個列表/返回該列表「? 「返回」就像方法的結果一樣? – 2009-06-24 07:18:33
真的不清楚你的意思;要麼這是簡單的,要麼是看似深刻的,取決於你的意圖... – 2009-06-24 07:18:36
更多輸入請, 你想實現什麼? 僞代碼可能有幫助 – 2009-06-24 07:18:49