我正在查看一些代码并看到了这个静态隐式运算符。我已经阅读了这个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);
}
}
答案 0 :(得分:2)
它定义了一个隐式转换,它允许你做像
这样的事情Envelope<string> e = "this will be enveloped";
与
相同Envelope<string> e = new Envelope<string>("this will be enveloped");
在这两种情况下,e.Body都是那个字符串。
答案 1 :(得分:1)
这样您就可以创建从T
到Envelope<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"