c#静态隐式运算符的用途是什么?

时间:2014-05-02 17:42:50

标签: c# implicit-conversion

我正在查看一些代码并看到了这个静态隐式运算符。我已经阅读了这个MSDN article on static implicit运算符,但我仍然不理解这段代码。有人可以解释一下开发者的意图。

public abstract class Envelope
{
    public static Envelope<T> Create<T>(T body)
    {
        return new Envelope<T>(body);
    }
}

public class Envelope<T> : Envelope
{
    public Envelope(T body)
    {
        this.Body = body;
    }

    public T Body { get; private set; }

    public static implicit operator Envelope<T>(T body)
    {
        return Envelope.Create(body);
    }
}

2 个答案:

答案 0 :(得分:2)

它定义了一个隐式转换,它允许你做像

这样的事情
Envelope<string> e = "this will be enveloped";

相同
Envelope<string> e = new Envelope<string>("this will be enveloped");

在这两种情况下,e.Body都是那个字符串。

答案 1 :(得分:1)

这样您就可以创建从TEnvelope<T>的隐式转化。

以下是一些可以帮助您理解的示例:

Envelope<string> envelope    = "My string"; // allowed
Envelope<int>    envelopeInt = 1;           // allowed

envelopeInt = 12;                           // allowed
envelopeInt = "string";                     // not allowed (not of type int)

Console.WriteLine(envelope.Body);           // Outputs "My string"