Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#到VB.NET的代码转换_C#_Vb.net - Fatal编程技术网

C#到VB.NET的代码转换

C#到VB.NET的代码转换,c#,vb.net,C#,Vb.net,你好 在将函数从C#转换为VB.NET时,我遇到了一个小问题。代码如下: public static IEnumerable<string> Lexicograph(List<string> characters, int length) { for (int i = 0; i < characters.Count; i++) { if (length == 1)

你好

在将函数从C#转换为VB.NET时,我遇到了一个小问题。代码如下:

    public static IEnumerable<string> Lexicograph(List<string> characters, int length)
    {
        for (int i = 0; i < characters.Count; i++)
        {
            if (length == 1)
                yield return characters[i];

            else
                foreach (string nxt in Lexicograph(characters.GetRange(i + 1, characters.Count - (i + 1)), length - 1))
                    yield return characters[i] + " " + nxt;
        }
    }
公共静态IEnumerable词典(列表字符,整数长度)
{
for(int i=0;i
我知道有一些在线转换器,但它们没有正确地完成工作,因为编译器说我的代码中有错误/警告(从字符串到IEnumerable的转换)

我对列表和IEnumerable接口不太熟悉,这就是我来这里的原因

如果有人能为这个或任何其他类型的提示找到解决方案,我们将不胜感激


提前感谢。

试试这段代码。。我想这也许能解决问题

编辑

  Public Shared Function Lexicograph(characters As List(Of String), length As Integer) As IEnumerable(Of String)
  For i As Integer = 0 To characters.Count - 1
    If length = 1 Then
        yield Return characters(i)
    Else

        For Each nxt As String In Lexicograph(characters.GetRange(i + 1, characters.Count - (i + 1)), length - 1)
            yield Return characters(i) + " " & nxt
        Next
    End If
Next
End Function

如果您使用的是Visual Studio 2012,请使用以下命令进行转换:

Public Shared Iterator Function Lexicograph(characters As List(Of String), length As Integer) As IEnumerable(Of String)
    For i = 0 To characters.Count - 1
        If length = 1 Then
            Yield characters(i)
        Else
            For Each nxt In Lexicograph(characters.GetRange(i + 1, characters.Count - (i + 1)), length - 1)
                Yield characters(i) & " " & nxt
            Next
        End If
    Next
End Function
如果您使用的是较旧的版本,并且您对非惰性变体没有问题,请执行以下操作:

Public Shared Function LexicographNonLazy(characters As List(Of String), length As Integer) As IEnumerable(Of String)
    Dim result = new List(Of String)
    For i = 0 To characters.Count - 1
        If length = 1 Then
            result.Add(characters(i))
        Else
            For Each nxt In Lexicograph(characters.GetRange(i + 1, characters.Count - (i + 1)), length - 1)
                result.Add(characters(i) & " " & nxt)
            Next
        End If
    Next
    Return result
End Function
试试这个:

Public Shared Iterator Function Lexicograph(ByVal characters As List(Of String), ByVal length As Integer) As IEnumerable(Of String)
        For i As Integer = 0 To characters.Count - 1
            If length = 1 Then
                Yield characters(i)

            Else
                For Each nxt As String In Lexicograph(characters.GetRange(i + 1, characters.Count - (i + 1)), length - 1)
                    Yield characters(i) & " " & nxt
                Next nxt
            End If
        Next i
 End Function

到目前为止,您还没有显示任何代码来显示您所尝试的内容。所以这不是翻译服务。我们不是来为你做转换的。如果发布转换后的代码并突出显示出现错误的位置,您可能会得到更多帮助。VB.NET不提供迭代器块。请看我的老问题:(在VS 2012中,编辑现在似乎得到了支持:)我怀疑它会被编译-为什么VB.Net会突然恢复为
的小写关键字产生
?这段代码显然不起作用<代码>如果(长度=1),那么如果
,则产生结束<代码>收益率
什么?什么都没有?您只能在标记为
迭代器的方法中使用
Yield
。另外,
产生返回字符(i)
应该是
产生字符(i)
。您只是复制/粘贴了一个在线转换器的错误结果。解决方法是将C代码“C”转换为VB.NET代码转换。我们刚刚将解决方案转换为VB.NET。