在VB.NET中转换为List(Of T)

Cri*_*inH 2 vb.net generics casting

在C#中可以转换为List<T>- 所以如果你有:

List<Activity> _Activities;
List<T> _list;
Run Code Online (Sandbox Code Playgroud)

以下将有效:

_list = _Activities as List<T>;
Run Code Online (Sandbox Code Playgroud)

但用VB.NET翻译的行是:

_list = TryCast(_Activities, List(Of T))
Run Code Online (Sandbox Code Playgroud)

抛出编译错误.所以我有一个很好的搜索并试验LINQ找到一个方法绕过这个无济于事.任何人的想法?

谢谢

克里斯平

Han*_*ant 5

我重申,这在技术上应该是可能的.很明显,编译器不同意.解决方法很简单:

    Dim _Activities As New List(Of Activity)
    Dim o As Object = _Activities
    Dim tlist = TryCast(o, List(Of T))
Run Code Online (Sandbox Code Playgroud)

或者作为一个单行:

    Dim tlist = TryCast(CObj(_Activities), List(Of T))
Run Code Online (Sandbox Code Playgroud)

JIT编译器应该优化临时性,因此不需要任何费用.