在构造函数中使用'this'

Mar*_*ark 1 c# constructor

我有一个我想要构建的类,通过从网络流反序列化它.

public Anfrage(byte[] dis)
    {
        XmlSerializer deser = new XmlSerializer(typeof(Anfrage));
        Stream str = new MemoryStream();
        str.Write(dis, 0, dis.Length);
        this = (Anfrage)deser.Deserialize(str);
    }
Run Code Online (Sandbox Code Playgroud)

目的是我只想传递byte []并拥有一个合适的对象,而不是使用另一个类中的方法.
现在,我知道我显然不能这样做=.我已经阅读了这个问题,目前正在阅读其中提到的文章,但我不确定我是否正确理解它.

我的意图是否足够明确?

有没有办法做我想做的事情?

谢谢你们.

Cod*_*ter 12

您不能通过分配来覆盖类本身内的对象this.

例如,您可以创建一个返回新实例的方法:

public static Anfrage Create(byte[] dis)
{
    XmlSerializer deser = new XmlSerializer(typeof(Anfrage));
    Stream str = new MemoryStream();
    str.Write(dis, 0, dis.Length);
    return (Anfrage)deser.Deserialize(str);
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样实例化一个:

var anfrage = Anfrage.Create(bytes);
Run Code Online (Sandbox Code Playgroud)

  • 是的你可以,但是你必须做一些像`temp = Deserialize()`然后将所有值从`temp`复制到`this`.你不希望这样. (3认同)