在 VB.Net 中,您可以执行类似以下操作而不会出现任何问题...只需忽略这是一个非常无用的类这一事实:-)
Imports System
Public Class Class1
Public Shared Function ArrayToList(ByVal _array() As String) As Collections.Generic.List(Of String)
Return New Collections.Generic.List(Of String)(_array)
End Function
End Class
但是如果你在 C# 中做同样的事情......
using System;
public class Class1
{
public static Collections.Generic.List ArrayToList(string[] _array)
{
return new Collections.Generic.List(_array);
}
}
您将在“Collections.Generic.List”返回线上收到一条错误,提示“无法找到类型或命名空间名称“Collections”(是否缺少 using 指令或程序集引用?)”
我知道你实际上必须有一个 System.Collections.Generic 的 using 指令才能使用 List,但我不知道why。我也不明白为什么我在函数声明中没有得到相同的错误,而只在 return 语句中得到同样的错误。
我希望有人可以解释这一点,甚至让我参考一个解释它的 technet 页面。我四处搜寻,但找不到任何可以解释这个概念的东西。
编辑:请注意,问题实际上是关于子命名空间的引用,例如在示例中能够引用 System 中的集合。
using
C# 中的指令不允许 this:
创建一个 using 指令来使用
无需在名称空间中键入
指定命名空间。一个使用
指令不允许您访问
嵌套在的任何命名空间
您指定的命名空间。
然而,VB.NET支持更接近行为与Imports
陈述:
构成要素的范围
可通过进口声明获得
取决于你的具体情况
使用进口声明。为了
例如,如果只有一个命名空间
指定的、所有唯一命名的成员
该命名空间的成员以及
该命名空间内的模块是
无需资质即可使用。如果
命名空间和名称
该命名空间的元素是
指定,仅该成员
元素可用,无需
资格。
参考SO问题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)