我正在研究从VB.NET到C#的代码转换。我找到了这段代码,试图把我的头缠住,但我无法理解它的评估方式:

If eToken.ToLower = False Then _
    Throw New Exception("An eToken is required for this kind of VPN-Permission.)


我的问题是字符串eToken.ToLower和布尔值False之间的比较。

我尝试使用转换器,得到的结果如下(在C#中这不是有效的语句,因为您无法将stringbool进行比较):

if (eToken.ToLower() == false) {
    throw new Exception("An eToken is required for this kind of VPN-Permission.");
}

最佳答案

我编译了它并反编译了IL。在C#中:

string eToken = "abc"; // from: Dim eToken As String = "abc" in my code
if (!Conversions.ToBoolean(eToken.ToLower()))
{
    throw new Exception("An eToken is required for this kind of VPN-Permission.");
}


因此,您的答案是:它正在使用Conversions.ToBoolean(其中ConversionsMicrosoft.VisualBasic.CompilerServices.Conversions中是Microsoft.VisualBasic.dll

09-09 21:04