将VB.NET字符串操作转换为C#

Rak*_*esh 2 c# vb.net

我试图将VB.NET代码转换为C#代码.

这是我的VB.NET代码:

Dim Part1 As String = "Some string"
Dim p_str As String
For I = 1 To Len(Part1)
    p_str = Chr(Asc(Mid$(Part1, I, 1)) + 17)
Next
Run Code Online (Sandbox Code Playgroud)

我把它翻译成C#就像这样:

string Part1 = "Some string";
string p_str = null;
for (I = 0; I <= Part1.Length - 1; I++)
{
    p_str = Convert.ToChar((Part1.IndexOf(Part1.Substring(I, 1)) + 65) + 17).ToString();
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这是否正确?

var*_*bas 6

你必须添加一个refererence到Microsoft.Visualbasic(顶部菜单中的"添加引用"和".NET"选项卡),并使用Strings.ChrStrings.Asc如果你想完美的模拟的行为Chr,并Asc(如警告说,这个环节由加里Shutler的答案).您的代码将变为:

string Part1 = "Some string";
string p_str = null;
for (int I = 0; I < Part1.Length; I++)
{
    p_str = Strings.Chr(Strings.Asc(Part1.Substring(I, 1)) + 17).ToString();
}
Run Code Online (Sandbox Code Playgroud)

澄清1:你发布的原始代码不是(纯)VB.NET,它是VB(VB.NET允许写入大部分VB命令).这就是为什么需要进行如此多的更改(例如:更改起始索引); VB.NET与C#.NET更相似(如下所示).

澄清二:人们普遍认为对VB的C#的翻译AscChr仅仅是石膏(以intchar分别),你可以在最投票的答案在上述链接查看.这是错的.使用两种替代方法测试此代码,以确认只有Strings选项始终提供正确的结果.

"PROPER"VB.NET代码:

Dim Part1 As String = "Some string"
Dim p_str As String = Nothing
For I As Integer = 0 To Part1.Length - 1
    p_str = Chr(Asc(Part1.Substring(I, 1)) + 17)
Next
Run Code Online (Sandbox Code Playgroud)