我试图将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)
谁能告诉我这是否正确?
你必须添加一个refererence到Microsoft.Visualbasic
(顶部菜单中的"添加引用"和".NET"选项卡),并使用Strings.Chr
和Strings.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#的翻译Asc
和Chr
仅仅是石膏(以int
和char
分别),你可以在最投票的答案在上述链接查看.这是错的.使用两种替代方法测试此代码,以确认只有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)
归档时间: |
|
查看次数: |
668 次 |
最近记录: |