这个 VB.NET 代码是如何评估的?
How is this VB.NET code evaluated?
我正在处理从 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# 中不是有效语句,因为您无法将 string
与 bool
进行比较):
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
(其中 Conversions
是 Microsoft.VisualBasic.dll
中的 Microsoft.VisualBasic.CompilerServices.Conversions
)
您可以进行类型转换,假设 eToken 的值为 "true"/"false":
if (Convert.ToBoolean(eToken.ToLower())==false)
throw new Exception("An eToken is required for this kind of VPN-Permission.");
}
我正在处理从 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# 中不是有效语句,因为您无法将 string
与 bool
进行比较):
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
(其中 Conversions
是 Microsoft.VisualBasic.dll
中的 Microsoft.VisualBasic.CompilerServices.Conversions
)
您可以进行类型转换,假设 eToken 的值为 "true"/"false":
if (Convert.ToBoolean(eToken.ToLower())==false)
throw new Exception("An eToken is required for this kind of VPN-Permission.");
}