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

c#静态隐式运算符它的用途是什么?,c#,implicit-conversion,C#,Implicit Conversion,我在看一些代码,看到了这个静态隐式操作符。我已经读过这个操作符,但是我仍然不理解这个代码。有人能解释一下开发者的意图吗 public abstract class Envelope { public static Envelope<T> Create<T>(T body) { return new Envelope<T>(body); } } public class Envelope<T> : Envel

我在看一些代码,看到了这个静态隐式操作符。我已经读过这个操作符,但是我仍然不理解这个代码。有人能解释一下开发者的意图吗

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);
    }
}
公共抽象类信封
{
公共静态信封创建(T体)
{
退回新信封(正文);
}
}
公共类信封:信封
{
公共信封(T体)
{
这个。身体=身体;
}
公共T体{get;私有集;}
公共静态隐式运算符封套(T体)
{
返回信封。创建(正文);
}
}

它定义了隐式转换,并允许您执行以下操作

Envelope<string> e = "this will be enveloped";
Envelope e=“这将被封装”;
这和

Envelope<string> e = new Envelope<string>("this will be enveloped");
Envelope e=新的信封(“将被信封”);

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

因此您可以创建从
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"
Envelope=“我的字符串”//允许
信封envelopeInt=1;//允许
envelopeInt=12;//允许
envelopeInt=“字符串”//不允许(不属于int类型)
Console.WriteLine(信封.正文);//输出“我的字符串”

您在理解文档的哪些方面有困难?前提相当简单,;它创建用户定义的从一种类型到另一种类型的隐式转换。这些文档和整个互联网都有大量的使用实例。在这种情况下,它的用途是什么。。他们在这里如何使用它?创建从
T
Envelope
的隐式转换。你可以用它隐式地将一个对象转换成一个
信封。那么,你可以将任何对象转换成信封吗?如果这让你感到困惑,那么你可以在问题中这样说。如果你的问题是这样的,“我理解隐式转换的基本原理,但我不理解当隐式转换是通用的时会发生什么。”那么你的问题就会变得更加清晰、集中,并且不会通过简单地阅读你所阅读的文档来回答。谢谢你的回答。有些人投了反对票,很高兴servy guy在我投了赞成票后把所有答案都投了反对票。他把问题标记为结束。我认为这个问题很简单;然而,很难判断谁对答案投了反对票,所以没有必要假设。不管怎样,否决票也没什么大不了的。。。除了有一次我告诉一个家伙他的代码中有一个bug之后,他浏览了我的历史,对所有的事情都投了否决票。。。这是一个假设。@Evanarsen没问题,这是一个完全正确的问题。Servy有点粗鲁,但不必为此生气:)这实际上提供了对代码执行情况的最清晰的了解。在引擎罩下,它将在分配时调用静态创建工厂方法。相当整洁!