将 C# 转换为 vb.net 后出现错误语法错误、预期标识符等

after converting c# to vb.net there is an error Syntax error ,Identifier expected,etc

提问人:roy 提问时间:6/23/2022 最后编辑:roy 更新时间:6/25/2022 访问量:185

问:

是否有最好的代码解决方案,以便 vb.net 中没有错误? 转换中是否有可能出现错误? 我提供了一个共享链接,因为我连续未能发布代码 c #。

链接 GOOGLE 云端硬盘代码 C#

'code output in VB.NET
Private Shared Function GenerateReceiptTemplate() As String
            Return "
                <center>
                    <font size='24px'><b>WcDonalds</b></font><br/> ''>' expected
                    <span>[email protected]</span> 'Attribute specifier is not a complete statement. Use a line continuation to apply the attribute to the following statement.
                </center> 'Identifier expected
                <br/><br/> ''>' expected
                <table width='100%'> ''>' expected
                    <thead>
                        <tr>
                            <th align='left'>Product Name</th> ''>' expected
                            <th>Quantity</th> 'Attribute specifier is not a complete statement. Use a line continuation to apply the attribute to the following statement.
                            <th align='right'>Subtotal</th> ''>' expected
                        </tr> 'Identifier expected
                    </thead> 'Identifier expected
                    <tbody>
                        <Orders/> ''>' expected
                    </tbody> 'Identifier expected
                </table> 'Identifier expected
                <br/> ''>' expected
                <center>---------------------------------------</center> 'Attribute specifier is not a complete statement. Use a line continuation to apply the attribute to the following statement.
                <br/> ''>' expected

                Total: <b><Total/></b><br/> ''>' expected
                Cash: <b><Cash/></b><br/> ''>' expected
                Change: <b><Change/></b><br/> ''>' expected
                <br/> ''>' expected
                Transaction ID: #<Id/><br/> 'Syntax error & Method arguments must be enclosed in parentheses & 'Transaction' is a type and cannot be used as an expression & 'If', 'ElseIf', 'Else', 'End If', 'Const', or 'Region' expected & 'ID' is not declared. It may be inaccessible due to its protection level
                Cashier: <Cashier/><br/> ''>' expected
                Date: <Date/><br/> 'Keyword is not valid as an identifier & 'Date' is a type and cannot be used as an expression & '.' expected

                <br/> ''>' expected
                <center>---------------------------------------</center> 'Attribute specifier is not a complete statement. Use a line continuation to apply the attribute to the following statement.
                <br/> ''>' expected

                <center><b>Thanks for visiting WcDonalds</b></center> 'Attribute specifier is not a complete statement. Use a line continuation to apply the attribute to the following statement.
                " 'Syntax error
        End Function

谢谢 千斤顶

C# vb.net visual-studio-2012 代码转换

评论

2赞 Jimi 6/24/2022
..并更新你的 Visual Studio 版本,如果你实际使用的是 v. 2012,那太旧了。Visual Studio 2022 社区版是免费软件。
1赞 Jimi 6/24/2022
因为为此,您至少需要 VB.Net 14 (VS 2015);你也没有字符串插值(以及许多其他常见功能:试图推动你,VS 2012 真的太老了:)
1赞 Jimi 6/24/2022
我不确定你在这里说什么。items with qty don't show up in print output 是什么意思?你没有看到 , 行(只是文本)?如果使用 的方法编写 ,则在输出面板中看到什么?-- 要在 webBrowser 控件中显示它,您应该编写,例如:Total:Cash:Console.WriteLine(GenerateReceiptTemplate())dr.nullWebBrowser1.Navigate("") Dim doc = WebBrowser1.Document.OpenNew(True) doc.Write(GenerateReceiptTemplate()) WebBrowser1.Refresh()
1赞 Jimi 6/24/2022
你所拥有的是完全错误的。保留标记(这被解释为 XElement 的开始/结束,这就是为什么您需要在末尾添加)并简单地在两者之间添加代码。没有,没有评论等。<html> ... </html>.ToString()vbCrLf
1赞 Jimi 6/25/2022
首先,你应该接受 dr.null 的答案,因为它在你的上下文中是正确的。然后,如果你不知道如何使用它来添加来自没人知道哪里的内联值,你需要发布另一个问题,指向这个问题。在回答问题后更改问题的代码或上下文根本不是一件好事。-- 此外,你有更好的机会解释你在这里想做什么,因为你之前的评论要求什么 - 或者你可能有什么问题 - 并不是很清楚 -- 你应该安装 VS 2022,这样你就有了多行字符串和字符串插值。

答:

2赞 dr.null 6/24/2022 #1

您可以使用 HTML 语言,只需输入元素的开始标签,例如 root 、hit,编辑器就会为您附加结束标签
。然后,可以调用以将 HTML 块返回为 .
<html>Enter</html></html>.ToString()string

在函数中,将所有内容替换为:GenerateReceiptTemplate

Private Shared Function GenerateReceiptTemplate() As String
    Return <html>

            </html>.ToString()
End Function

文件中,复制两个双引号之间的 HTML,并将其粘贴到块中。"..."<html></html>

Private Shared Function GenerateReceiptTemplate() As String
    Return <html>
                <center>
                    <font size='24px'><b>WcDonalds</b></font><br/>
                    <span>[email protected]</span>
                </center>
                <br/><br/>
                <table width='100%'>
                    <thead>
                        <tr>
                            <th align='left'>Product Name</th>
                            <th align='center'>Quantity</th>
                            <th align='right'>Subtotal</th>
                        </tr>
                    </thead>
                    <tbody>
                        <Orders/>
                    </tbody>
                </table>
                <br/>
                <center>---------------------------------------</center>
                <br/>

        Total: <b><Total/></b><%= qty %><br/>
        Cash: <b><Cash/></b><%= someSharedField %><br/>
        Change: <b><Change/></b><%= someParam %><br/>
                <br/>
        Transaction ID:   #<Id/><br/>
        Cashier: <Cashier/><br/>
        Date: <Date/><br/>

                <br/>
                <center>---------------------------------------</center>
                <br/>

                <center><b>Thanks For visiting WcDonalds</b></center>
            </html>.ToString()
End Function

仅此而已。

注意:不确定 VS2010、VS2012 框架是否支持此功能。是时候继续前进了!

评论

1赞 Jimi 6/24/2022
或者,将整个内容放在双引号之间,这样您就不需要转换为字符串(对于 VB.Net 11 来说可能太多了)XElement
0赞 roy 6/24/2022
@dr.null ,我尝试了您的代码解决方案成功了,没有错误
0赞 roy 6/24/2022
@dr.null ,我使用代码解决方案确实没有错误,但项目和数量没有出现在打印输出中,但如果我将它与 c# 程序语言一起使用,它会显示
0赞 dr.null 6/25/2022
@Jack,如果需要附加变量值,请将它们包含在标签中。不过,我在您的代码中没有看到任何赋值或参数。请注意,您的函数是 ,那么您需要将其作为函数参数或通过 Shared 字段传递变量,或者删除 Shared 修饰符。此外,如果您结合 Jimi 的评论,结果是您问题的另一个答案。<%= variable %>Shared
0赞 dr.null 6/25/2022
@Jack 要输出项目列表,这将是另一个问题。我们在此处修复了错误部分,作为您的问题和代码示例的标题建议。