簡體   English   中英

在構造函數中使用“ this”

[英]using 'this' in a 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);
    }

目的是我只想傳遞byte []並擁有適當的對象,而不是在另一個類中使用方法。
現在,我知道我顯然無法做到這一點 我已經閱讀了這個問題 ,目前正在閱讀其中提到的文章,但是我不確定我是否正確理解它。

我的意圖足夠清楚嗎?

有沒有辦法做我想在這里完成的工作?

謝謝你們。

您不能通過分配給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);
}

然后,您可以像這樣實例化一個:

var anfrage = Anfrage.Create(bytes);

通常,用返回對象的靜態非構造函數處理此問題。

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);
}

如果要擁有一個新對象並對其進行編輯,請將構造函數設為私有而不是public,並使用靜態構造函數對其進行訪問

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM