这个VB.NET代码是如何评估的?

时间:2015-01-13 12:55:01

标签: c# vb.net string boolean comparison

我正在进行从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.");
}

2 个答案:

答案 0 :(得分:4)

我编译了它并反编译了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.ToBooleanConversions中的Microsoft.VisualBasic.CompilerServices.Conversions Microsoft.VisualBasic.dll}

答案 1 :(得分:1)

您可以进行类型转换,假设,eToken的值为“true”/“false”:

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