我有個問題關於反序列化陣列(INT [,]) 我有一個數組int[*,*]
,我需要序列化和反序列化。如何用XMLSerializer做到這一點?的Xml解串器反序列化2維數組
int[,] B = new int[2,5];
public int[,] XMLIntArray
{
set { B = value; }
get { return B; }
}
我有個問題關於反序列化陣列(INT [,]) 我有一個數組int[*,*]
,我需要序列化和反序列化。如何用XMLSerializer做到這一點?的Xml解串器反序列化2維數組
int[,] B = new int[2,5];
public int[,] XMLIntArray
{
set { B = value; }
get { return B; }
}
不幸的是多維數組序列不被XmlSerializer的或DataContractSerializer的唯一支持的方式(不是人類可讀的)是使用二進制序列等在該示例
public static void Main()
{
int[,] B = new int[2, 5];
B[0, 0] = 5;
B[0, 1] = 3;
B[0, 2] = 5;
DeepSerialize<int[,]>(B,"test3");
int[,] des= DeepDeserialize<int[,]>("test3");
}
public static void DeepSerialize<T>(T obj,string fileName)
{
// MemoryStream memoryStream = new MemoryStream();
FileStream str = new FileStream(fileName, FileMode.Create);
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(str, obj);
str.Close();
}
public static T DeepDeserialize<T>(string fileName)
{
// MemoryStream memoryStream = new MemoryStream();
FileStream str = new FileStream(fileName, FileMode.Open);
BinaryFormatter binaryFormatter = new BinaryFormatter();
T returnValue = (T)binaryFormatter.Deserialize(str);
str.Close();
return returnValue;
}
不能serialze一個INT [,]但是你可以序列化一個int [] []。在序列化陣列之前,只需將它轉換成如下形式:
var my2dArray = new int[2,5];
var myJaggedArray = new int [2][];
for(int i = 0 ; i < my2DArray.GetLength(0) ; i ++)
{
myJaggedArray[i] = new int[my2DArray.GetLength(1)];
for(int j = 0 ; j < my2DArray.GetLength(1) ; j ++)
myJaggedArray[i][j] = my2DArray[i,j];
}
那麼,你試過了什麼?它是如何失敗的? – svick
我不知道我該怎麼做。任何想法(( – KAMAEL
)不幸的是,你不能使用XmlSerializer進行多維數組,但你可以使用鋸齒形數組。'int [] [] B' –