6

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

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

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

4

4 回答 4

5

只要定义了隐式转换运算符,就会发生这种情况。总而言之,这是非常罕见的。

于 2010-08-08T20:44:22.543 回答
4

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

编辑:Matt ninja'd it :)

于 2010-08-08T20:45:21.803 回答
2

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

于 2010-08-08T20:50:41.323 回答
1

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

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

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

在我的代码中,我已经使用了几次,例如在一个非常简单的验证结果结构中,它提供了到 bool(但不是 from)的隐式转换。这让我可以做到if (result) { ... }(尽管陪审团仍然不知道这样做的用处:))。

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

于 2010-08-08T20:57:29.527 回答