将包含新行字符的字符串从VB.NET传递到C#.NET

将包含新行字符的字符串从VB.NET传递到C#.NET,c#,.net,vb.net,string,C#,.net,Vb.net,String,我有一个VB程序,它将字符串作为输入传递给C#方法。输入可能包含转义字符,如\n,C#方法将尝试在其上拆分 示例VB方法: Module VBClass Sub Main() Dim c As CSharpClass = New CSharpClass() c.MyMethod("Hello\nWorld\nFrom\nMike") End Sub End Module 示例C#方法: 但是,当C#方法接收到字符串时,它的形式为“Hello\\nWorld”,不会在delime

我有一个VB程序,它将字符串作为输入传递给C#方法。输入可能包含转义字符,如\n,C#方法将尝试在其上拆分

示例VB方法:

Module VBClass
Sub Main()
    Dim c As CSharpClass = New CSharpClass()
    c.MyMethod("Hello\nWorld\nFrom\nMike")
End Sub
End Module
示例C#方法:

但是,当C#方法接收到字符串时,它的形式为“Hello\\nWorld”,不会在delimeter上拆分\n

从我在谷歌上搜索过的各种帖子中,我认为VB将转义序列视为字符串的常规部分,因此C#在其上抛出一个双斜杠,以逐字处理

如果我的猜测更接近事实,是否有方法传递字符串以便C#可以在\n上拆分

编辑:谢谢你的建议。我已经向VB子系统添加了一些测试调用,并将使用第三个(替换为vbLf)


对不起,我不太熟悉StackOverflow。我知道我需要什么,并且认为我应该添加一篇帖子,而不是编辑我的原始回复

在将字符串传递给C#方法之前,我将在字符串上运行.Replace。它已正确接收并可以成功拆分。感谢Sehnsucht提出vbLf,因为环境。Newline不适合我

MyStringInput.Replace("\n", vbLf)

你所有的假设都不正确。。发布一个显示你问题的可编译代码如何?VB.NET不把这个字符看作一个逃逸字符。它将其字面上处理为\,因此您在C#端接收到正确的值。
CSharpMethod(“Hello”&vbLf&“World”)
如果要使用的字符在其转换范围内,则可以使用。
环境。新行
本可以工作,但会隐藏一个小错误,因为它依赖于环境,如文档中所述。将此作为答案发布是正确的,因为这篇文章描述了如何解决您的问题。
    c.MyMethod("Hello" + Environment.NewLine + "World")
    c.MyMethod("Hello" + vbLf + "World")
    c.MyMethod("Hello\nWorld\nFrom\nMike".Replace("\n", vbLf))
MyStringInput.Replace("\n", vbLf)