任何人都可以告诉我如何存储和返回字符串列表。
我被问到这是因为我写了一个函数,它返回字符串集合和我
想要为那个准备一个COM,并且需要在
中使用该COM(以获取返回的列表)vc ++我可以使用该字符串列表扩展一些功能。
我希望thius能够清楚......
先谢谢
答案 0 :(得分:11)
List<string>或string []是最佳选择。
以下是返回字符串列表的示例方法:
public static List<string> GetCities()
{
List<string> cities = new List<string>();
cities.Add("Istanbul");
cities.Add("Athens");
cities.Add("Sofia");
return cities;
}
答案 1 :(得分:3)
您可以将固定的字符串列表存储为数组:
string[] myStrings = {"Hello", "World"};
或动态列表为List<string>
:
List<string> myStrings = new List<string>();
myStrings.Add("Hello");
myStrings.Add("World");
答案 2 :(得分:3)
在C#中,您只需返回List<string>
,但您可能希望返回IEnumerable<string>
,因为它允许进行延迟评估。
答案 3 :(得分:2)
有很多方法可以表示.NET中的字符串列表,List&lt; string&gt;是最狡猾的。但是,您无法将此返回给COM,因为:
COM不了解.NET Generics
FxCop会告诉你,返回某个内部实现(List)而不是抽象接口(IList / IEnumerable)是不好的做法。
除非你想进入真正可怕的Variant SafeArray对象(不推荐),否则你需要创建一个'collection'对象,以便你的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)
答案 4 :(得分:1)
昨天你问过如何通过COM互操作来做到这一点!为什么退步?
How to return a collection of strings from C# to C++ via COM interop
答案 5 :(得分:0)
public static IList<string> GetStrings()
{
foreach( var item in GetStringItems())
yield return item;
}