Alternative to VB.NET's Type Conversion functions (CBool) in C#?

孤街浪徒 提交于 2019-12-01 19:27:27

The trick is that the Cxx "functions" in VB.NET aren't actually functions. In fact, they're more like operators that the compiler translates to what it determines is the "best-match" type conversion.

Paul Vick used to have a great article about this on his blog, but all those pages seem to have been taken down now. MSDN (which is mostly accurate here) says:

These functions are compiled inline, meaning the conversion code is part of the code that evaluates the expression. Sometimes there is no call to a procedure to accomplish the conversion, which improves performance. Each function coerces an expression to a specific data type.

The options it has available to do so include a direct cast (such as: (bool)var), an attempt to cast (using the as operator), calling one of the methods defined in the System.Convert class, calling the applicable Type.Parse method, and maybe some other strategies.

There's no direct equivalent of this in C#: you have to do the compiler's thinking instead.

In this case, you'll almost certainly want to use the appropriate overload of the Convert.ToBoolean method because that particular method will have the necessary logic to convert the value into a bool. A direct cast won't work here.

Take a look at the System.Convert class.

If you expect to be converting from one of the string values: "True", "true", "False", or "false", you should use Boolean.Parse. Instead of trying to be "smart" about it, Parse will "fail fast" if it doesn't get what it expects. By using a "smart" conversion when you don't really need it, you may mask errors at their source then have to track them down when they appear later in the code, which is usually more difficult.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!