【问题标题】:When must we use implicit and explicit operators in C#?我们什么时候必须在 C# 中使用隐式和显式运算符?
【发布时间】:2025-12-15 03:20:45
【问题描述】:

这些运算符的用途是什么?

【问题讨论】:

    标签: c# operators implicit explicit


    【解决方案1】:

    基本上当您想提供类型之间的转换时。 LINQ to XML 提供了很好的例子...有一个从字符串到 XName 的隐式转换,所以你可以这样写:

    XName name = "element";
    

    但是有一个从XAttributeint(和许多其他类型)的显式转换,所以你必须在你的代码中包含一个演员:

    int value = (int) element.Attribute("age");
    

    在提供隐式转换之前要仔细考虑 - 它们很少是个好主意; LINQ to XML 使用它们效果很好,但它们可能会令人困惑。即使是明确的用户定义转换也会让粗心的读者感到惊讶。

    【讨论】:

    • 几乎大多数时候我都避免将它们用作图书馆设计师(除非我确信它们不会被滥用和抱怨)。
    【解决方案2】:

    它们用于operator overloading。这是MSDN article的链接。

    【讨论】: