[英]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.