C# 使用';这';在构造函数中
我想通过从网络流反序列化来构造一个类C# 使用';这';在构造函数中,c#,constructor,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);
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);
不能通过指定给
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 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);
}
如果您想拥有一个新对象并对其进行编辑,请将构造函数设置为私有而不是公共,并使用静态构造函数访问它您可以在值类型的构造函数中分配给此。但是,它可能没有您期望的效果。您可以在值类型的构造函数中指定给
this
。但是,它可能没有你期望的效果。因此,没有办法创建一个像Anfrage whatev=newanfrage(byteArrayFromSerialization)
这样的构造函数?是的,你可以,但是你必须做一些类似temp=Deserialize()
的事情,然后将temp
中的所有值复制到this
中。你不想这样。所以没有办法创建一个像Anfrage whatev=newanfrage(byteArrayFromSerialization)
这样的构造函数?是的,你可以,但是你必须做一些类似temp=Deserialize()
的事情,然后将temp
中的所有值复制到这个中。你不会想要的。你是认真的,还是只是个打字慢的人?;-)抱歉,我点击了Anwer并编写了代码。。。我总是看到,我的答案已经是另一个人在提交后写的:(你是认真的,还是打字慢?;-)对不起,我点击了Anwer并写了代码。。。我总是看到,我的答案已经是另一个人在提交后写的:(