您的位置:首页 > 编程语言 > C#

C# 调用 Microsoft.VisualBasic.Collection

2007-07-17 23:54 337 查看
问题

Dim d As New Collection
d.Add("Northsnow")
d.Add("塞北的雪")
d.Add("http://blog.csdn.net")
Dim t As New ArrayList(d)
Dim sb As New System.Text.StringBuilder()
If t.Count > 0 Then
sb.Append("ArrayList中共有 成员 ")
sb.Append(t.Item(2).ToString)
sb.Append(" 个")
For Each aa As String In t
sb.AppendLine()
sb.Append(aa)
Next
End If
MsgBox(sb.ToString)

以上是使用ARRAYLIST存储一个集合,VB中可以使用collectin,将其传入arraylist,而在C#中如何定义这个东西,使他能够传入ARRAYLIST呢?给个例子,谢谢
http://community.csdn.net/Expert/TopicView3.asp?id=5655091

解决

1。
// 事实上你可以直接在 C# 中使用 Microsoft.VisualBasic.Collection
// 需要添加对 Microsoft.VisualBasic.dll 的引用
Microsoft.VisualBasic.Collection d = new Microsoft.VisualBasic.Collection();
d.Add("Northsnow", null, null, null); // C# 不支持可选参数, 若不指定 传入 null
d.Add("塞北的雪", null, null, null);
d.Add("http://blog.csdn.net", null, null, null);
ArrayList t = new ArrayList(d);
StringBuilder sb = new System.Text.StringBuilder();

2。
以上代码比较适合将进行 VB.net 向 C# 的直接移植,

因为

Visual Basic 集合与 System.Collections、System.Collections.Generic 和 System.Collections.Specialized 命名空间中的 .NET Framework 集合不兼容

具体没有实践过,不知道是否会导致后期维护的困难。

3。
若新项目,最佳实践实现是,使用 System.Collection.ArrayList

ArrayList list1 = new ArrayList();
list1.Add("a");
list1.Add("b");
ArrayList list2 = new ArrayList(list1);

补充

// 对于 .net 2.0 最佳还是选择泛型版本的 List
// using System.Collections.Generic;
IList<int> list2 = new List<int>(2);
list2.Add(119);
list2.Add(911);
//

Visual Basic Collection 类 http://msdn2.microsoft.com/zh-cn/library/microsoft.visualbasic.collection(VS.80).aspx

总结
1. .NET 果然跨语言^_^
2. 由于语言特性本身的差异,需要注意对特定语法支持,特别是开发类库的时候
3. 为保证语言的兼容性和互操作性,尽可能选择非特定语言支持的类库,而使用 System 命名空间及其子命名空间的类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐