[Serializable] public class SumOf { public SumOf() { } public DecimalList Members = new DecimalList(); public decimal Sum,Avg; public void Calculate() { this.Sum = 0; foreach (decimal m in Members) { Sum += m; } this.Avg = Sum / Members.Count; } } [Serializable] public class DecimalList : List<decimal> { } SumOf sObj; private void button1_Click(object sender, EventArgs e) { // create a file stream to write the file FileStream fileStream = new FileStream("DoSum.bin", FileMode.Create); // use the CLR binary formatter BinaryFormatter binaryFormatter = new BinaryFormatter(); // serialize to disk binaryFormatter.Serialize(fileStream, sObj); fileStream.Close(); } private SumOf BuildSumObj() { SumOf sObj = new SumOf(); for (int i = 0; i < this.numericUpDown1.Value; i++) { sObj.Members.Add(i); } sObj.Calculate(); return sObj; } private void button2_Click(object sender, EventArgs e) { // create a file stream to write the file FileStream fileStream = new FileStream("DoSum_Soap.xml", FileMode.Create); // use the CLR binary formatter SoapFormatter formatter = new SoapFormatter(); // serialize to disk formatter.Serialize(fileStream, sObj); fileStream.Close(); } private void button3_Click(object sender, EventArgs e) { sObj = this.BuildSumObj(); this.toolStripStatusLabel1.Text = string.Format("数量:{0},合计:{1},平均值:{2}", sObj.Members.Count, sObj.Sum, sObj.Avg); } private void button4_Click(object sender, EventArgs e) { // create a file stream to write the file FileStream fileStream = new FileStream("DoSum.xml", FileMode.Create); // use the CLR binary formatter System.Xml.Serialization.XmlSerializer formatter = new XmlSerializer(typeof(SumOf)); // serialize to disk formatter.Serialize(fileStream, sObj); fileStream.Close(); }
谢谢啊。 还有一个问题是 public static string SerializeObject(Person obj) {
XmlSerializer ser = new XmlSerializer(typeof(Person), new Type[] {obj.GetType() }); System.IO.MemoryStream mem = new MemoryStream(); XmlTextWriter writer = new XmlTextWriter(mem, Encoding.Default); ser.Serialize(writer, obj); writer.Close(); return Encoding.Default.GetString(mem.ToArray()); }这段代码 什么意思 二进制的也可以这样弄么?
public class SumOf
{
public SumOf()
{
} public DecimalList Members = new DecimalList(); public decimal Sum,Avg; public void Calculate()
{
this.Sum = 0;
foreach (decimal m in Members)
{
Sum += m;
}
this.Avg = Sum / Members.Count; } }
[Serializable]
public class DecimalList : List<decimal>
{
}
SumOf sObj;
private void button1_Click(object sender, EventArgs e)
{
// create a file stream to write the file
FileStream fileStream = new FileStream("DoSum.bin", FileMode.Create);
// use the CLR binary formatter
BinaryFormatter binaryFormatter = new BinaryFormatter();
// serialize to disk
binaryFormatter.Serialize(fileStream, sObj);
fileStream.Close(); }
private SumOf BuildSumObj()
{
SumOf sObj = new SumOf();
for (int i = 0; i < this.numericUpDown1.Value; i++)
{
sObj.Members.Add(i);
}
sObj.Calculate();
return sObj;
} private void button2_Click(object sender, EventArgs e)
{
// create a file stream to write the file
FileStream fileStream = new FileStream("DoSum_Soap.xml", FileMode.Create);
// use the CLR binary formatter
SoapFormatter formatter = new SoapFormatter();
// serialize to disk
formatter.Serialize(fileStream, sObj);
fileStream.Close(); } private void button3_Click(object sender, EventArgs e)
{
sObj = this.BuildSumObj();
this.toolStripStatusLabel1.Text =
string.Format("数量:{0},合计:{1},平均值:{2}", sObj.Members.Count, sObj.Sum, sObj.Avg); } private void button4_Click(object sender, EventArgs e)
{
// create a file stream to write the file
FileStream fileStream = new FileStream("DoSum.xml", FileMode.Create);
// use the CLR binary formatter
System.Xml.Serialization.XmlSerializer
formatter = new XmlSerializer(typeof(SumOf));
// serialize to disk
formatter.Serialize(fileStream, sObj);
fileStream.Close();
}
public static string SerializeObject(Person obj)
{
XmlSerializer ser = new XmlSerializer(typeof(Person), new Type[] {obj.GetType() });
System.IO.MemoryStream mem = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(mem, Encoding.Default);
ser.Serialize(writer, obj);
writer.Close();
return Encoding.Default.GetString(mem.ToArray()); }这段代码 什么意思 二进制的也可以这样弄么?