调试时出现错误:未处理的“System.Runtime.Serialization.SerializationException”类型的异常出现在 mscorlib.dll 中

notno 2004-10-10 10:43:56
static void SaveListToDisk(LinkedList list)
{
list.Draw();
Console.WriteLine("save list to disk...");
Stream s = File.Open("linkedlist.bin",FileMode.Create);
BinaryFormatter b = new BinaryFormatter();
b.Serialize(s,list);
s.Close();
}

未处理的“System.Runtime.Serialization.SerializationException”类型的异常出现在 mscorlib.dll 中

附近全部源程序:
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace exam2_16
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class TestLink
{
const int iMinValue = 1;
const int iMaxValue = 9;

[STAThread]
static void Main(string[] args)
{
Test1();
Test2();
Test3();
Console.ReadLine();

return;
}

static public void Test1(){
Console.Write("Create and initialize link..");
LinkedList list = new LinkedList();
for(int i = iMinValue; i <= iMaxValue; i ++)
list.Add(i);
SaveListToDisk(list);
}

static public void Test2(){
LinkedList list = LoadListFromDisk();
Console.Write("swap node 1 and 2");
list.SwapPositions(1,2);
SaveListToDisk(list);
}

static public void Test3(){
LinkedList list = LoadListFromDisk();
Console.Write("delete node 2");
list.Remove(2);
SaveListToDisk(list);
}

static LinkedList LoadListFromDisk(){
Console.WriteLine("Load list from disk...");
// Stream s = (new File("linkedlist.bin")).;
Stream s = File.Open("linkedlist.bin",FileMode.Open);
BinaryFormatter b = new BinaryFormatter();
LinkedList list = (LinkedList)b.Deserialize(s);
s.Close();
list.Draw();
return list;
}

static void SaveListToDisk(LinkedList list)
{
list.Draw();
Console.WriteLine("save list to disk...");
Stream s = File.Open("linkedlist.bin",FileMode.Create);
BinaryFormatter b = new BinaryFormatter();
b.Serialize(s,list);
s.Close();
}
}

class Node
{
public int Value;
public Node NextNode = null;
public Node(int NewValue){
Value = NewValue;
}
}

class LinkedList{
Node m_head = null;
Node m_tail = null;

public Boolean Add(int iValue){
Node curNode = m_head;
while(curNode != null){
if(curNode.Value == iValue){
return false;
}
curNode = curNode.NextNode;
}

Node newNode = new Node(iValue);

if(m_tail == null)
{
m_head = m_tail = newNode;
}
else{
m_tail.NextNode = newNode;
m_tail = newNode;
}


return true;
}

public Boolean Remove(int iValue){
Node prevNode = null;
Node curNode = m_head;
while(curNode != null)
{
if(curNode.Value == iValue)
{
if(prevNode == null)
{
if(m_head == m_tail)
m_head = m_tail = null;
else
m_head = m_head.NextNode;
}
else
{
prevNode.NextNode = curNode.NextNode;
break;
}
return true;
}
prevNode = curNode;
curNode = curNode.NextNode;
}
return false;
}

public Node FindNode(int iValue){
Node curNode = m_head;
while(curNode != null){
if(curNode.Value == iValue)
return curNode;
curNode = curNode.NextNode;
}
return null;
}

public Boolean SwapPositions(int iValue1, int iValue2)
{
Node curNode = m_head;
Node Node1 = null;
Node Node2 = null;
Node prevNode = null;
Node prevNode1 = null;
Node prevNode2 = null;

if(iValue1 == iValue2)
return false;

while(curNode != null)
{
if(curNode.Value == iValue1)
{
prevNode1 = prevNode;
Node1 = curNode;
}
else if(curNode.Value == iValue2)
{
prevNode2 = prevNode;
Node2 = curNode;
}

if(Node1 != null && Node2 != null)
break;
prevNode = curNode;
curNode = curNode.NextNode;
}

if(Node1 == null || Node2 == null)
return false;

if(prevNode1 == null)
{
m_head = Node2;
}
else
prevNode2.NextNode = Node1;

if(prevNode2 == null)
{
m_head = Node1;
}
else
prevNode2.NextNode = Node1;

Node tmp = Node1.NextNode;
Node1.NextNode = Node2.NextNode;
Node2.NextNode = tmp;

return true;
}

public void Draw()
{
Node curNode = m_head;
Console.Write("List:");
while(curNode != null)
{
Console.Write(curNode.Value + " ");
curNode = curNode.NextNode;
}
Console.WriteLine();
}
}
}
...全文
604 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
tear_pearl 2004-10-10
  • 打赏
  • 举报
回复
[Serializable]
class Node
{
public int Value;
public Node NextNode = null;
public Node(int NewValue)
{
Value = NewValue;
}
}

[Serializable]
class LinkedList
{
Node m_head = null;
Node m_tail = null;

public Boolean Add(int iValue)
{
Node curNode = m_head;
while(curNode != null)
{
if(curNode.Value == iValue)
{
return false;
}
curNode = curNode.NextNode;
}

Node newNode = new Node(iValue);

if(m_tail == null)
{
m_head = m_tail = newNode;
}
else
{
m_tail.NextNode = newNode;
m_tail = newNode;
}


return true;
}

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧