将VB转换为C#类型转换
我需要帮助将一些代码从VB翻译成C 这是我的翻译代码,感谢JaredPar和其他人将VB转换为C#类型转换,c#,vb.net,implicit-conversion,C#,Vb.net,Implicit Conversion,我需要帮助将一些代码从VB翻译成C 这是我的翻译代码,感谢JaredPar和其他人 public static string ToBase36(double IBase36) { string[] Base36 = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O",
public static string ToBase36(double IBase36)
{
string[] Base36 = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
string v = null;
long i = default(long);
while (!(IBase36 < 1))
{
IBase36 = Convert.ToDouble(Math.DivRem(Convert.ToInt64(IBase36), 36, out i));
v = Base36[i] + v;
}
return v;
}
公共静态字符串ToBase36(双IBase36)
{
字符串[]Base36={“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”、“J”、“K”、“L”、“M”、“N”、“O”、“P”、“Q”、“R”、“S”、“T”、“U”、“V”、“W”、“X”、“Y”、“Z”};
字符串v=null;
长i=默认值(长);
而(!(IBase36<1))
{
IBase36=Convert.ToDouble(Math.DivRem(Convert.ToInt64(IBase36),36,out i));
v=Base36[i]+v;
}
返回v;
}
这就是你想要的。返回上述整数除法应处理的商。第三个out参数返回余数,但在vb中不关心它。net代码,您可以忽略它。现在试试:
long unused = null;
IBase36 = Convert.ToDouble(Math.DivRem(Convert.ToInt64(IBase36), 36, out unused));
要进行翻译,首先了解VB.Net代码的功能非常重要。在引擎盖下,它将基本上生成以下内容
Dim unused As Long
IBase36 = CDbl(Math.DivRem(Long.Parse(CStr(IBase36)), 36, unused)
注意:未使用的变量是必需的,因为第三个参数是out
。这是翻译成C#时的一个重要区别
上述最自然的C#等价物是
long unused;
IBase36 = Convert.ToDouble(Math.DivRem(Long.Parse(IBase36.ToString()), 36, out unused);
代码是从第三个参数到
Math.DivRem
是out
所以null
不起作用
long unused = null;
IBase36 = Convert.ToDouble(Math.DivRem(Convert.ToInt64(IBase36), 36, out unused));
Dim unused As Long
IBase36 = CDbl(Math.DivRem(Long.Parse(CStr(IBase36)), 36, unused)
long unused;
IBase36 = Convert.ToDouble(Math.DivRem(Long.Parse(IBase36.ToString()), 36, out unused);