C#中隐式变量赋值的示例

时间:2010-08-08 20:41:56

标签: c# implicit-conversion

我注意到你可以在C#中做这类事情:

XNamespace c = "http://s.opencalais.com/1/pred/";

请注意,字符串值会隐式转换为其他类型。还有其他地方可以做到吗?围绕这类事情有哪些常见的模式和做法?

4 个答案:

答案 0 :(得分:5)

只要定义了implicit conversion operator,就会发生这种情况。总而言之,这是非常罕见的。

答案 1 :(得分:4)

这应该有所帮助 http://msdn.microsoft.com/en-us/library/z5z9kes2.aspx

编辑:马特忍者:)

答案 2 :(得分:2)

令人惊讶的是,我第一次看到这是关于C#转换运算符的Wikipedia article时,我以前从未见过有人使用它。似乎它会损害可读性并使许多开发人员感到困惑......

答案 3 :(得分:1)

基本上XNamespace提供执行隐式转换的运算符。

我想大多数常识性指南都适用,只有在有意义的地方使用它并避免混淆。最大的问题是非预期的隐式转换,这可能会导致编程错误。您可以避免这种情况,并仍使用显式转换运算符提供转换。

您希望使用显式转换运算符而不是隐式转换运算符的示例是允许从浮点类型转换的整数类;隐式转换会隐藏必须发生的截断/舍入,从而可能使用户非常困惑(并且可能是错误的来源。)

在我的代码中,我已经使用了几次,例如在一个非常简单的验证结果结构中,它提供了对bool的隐式转换(但不是来自)。这让我做if (result) { ... }(虽然陪审团仍然对此有用:)。)

猜测它的大部分用途是“简单”数据类型,如大整数,小数等。