Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将3D阵列保存为文本文件?_C# - Fatal编程技术网

C# 如何将3D阵列保存为文本文件?

C# 如何将3D阵列保存为文本文件?,c#,C#,我想问一些关于将3D数组保存为文本文件的问题 using(FileStream fs = new FileStream(saveFileDialog1.FileName + ".txt", FileMode.Create, FileAccess.Write)) using(StreamWriter sw = new StreamWriter(fs, Encoding.Default)) { for (int i=0; i < simulate.ResultDat

我想问一些关于将3D数组保存为文本文件的问题

using(FileStream fs = new FileStream(saveFileDialog1.FileName + ".txt", FileMode.Create, FileAccess.Write))
using(StreamWriter sw = new StreamWriter(fs, Encoding.Default))
{
    for (int i=0; i < simulate.ResultData.GetLength(0); i++)
        {
            for (int j=0; j < simulate.ResultData.GetLength(1); j++)
                {
                    sw.Write(simulate.ResultData[i,j] + "\t");
                }
                   sw.WriteLine();
               }
          }
我有一个使用蒙特卡罗模拟来模拟光子在介质中移动的代码

这是将二维阵列数据保存到文本文件的代码

using(FileStream fs = new FileStream(saveFileDialog1.FileName + ".txt", FileMode.Create, FileAccess.Write))
using(StreamWriter sw = new StreamWriter(fs, Encoding.Default))
{
    for (int i=0; i < simulate.ResultData.GetLength(0); i++)
        {
            for (int j=0; j < simulate.ResultData.GetLength(1); j++)
                {
                    sw.Write(simulate.ResultData[i,j] + "\t");
                }
                   sw.WriteLine();
               }
          }
使用(FileStream fs=newfilestream(saveFileDialog1.FileName+“.txt”,FileMode.Create,FileAccess.Write))
使用(StreamWriter sw=新StreamWriter(fs,Encoding.Default))
{
for(int i=0;i
我想知道我是否可以通过添加一句话将3D数组保存为文本文件,如

for (int k=0; k < simulate.ResultData.GetLength(2); k++)
for(int k=0;k
或者我需要在代码中添加其他信息

谢谢。

您可以在文本文件中“保存”任何对象。这称为
序列化
。不管它是一个3D数组,一个对象数组,每个包含对象数组,对象包含数组,等等

一个流行的.NET序列化软件包是
NewtonSoft
。在努吉寻找它

您可以将上面的所有复杂代码替换为:

File.WriteAllText(saveFileDialog1.FileName, JsonConvert.SerializeObject(simulate));

这将适用于任何类型的
simulate

为什么不试试?作为这里的一个新用户,也请拿着这个并阅读。我试过了。上面写着System.IndexOutOfRangeException.感谢您的回复。你的意思是我可以用你的一句话代码来更改我上面的所有代码吗?是的,这完全正确,除非你需要符合其他格式,那么是的,你可以用那行代码来替换你的整个代码,反序列化就是
JsonConvert.DeserializeObject(json)
我使用定义JsonConvert,并用您的代码更改了我的代码,但数据没有保存为文本文件。数据文件表示它不是受支持的格式。将图像和数据保存为文本文件的总代码为public void SaveImg(){if(saveFileDialog1.ShowDialog()==DialogResult.OK){imageBox1.image.Save(saveFileDialog1.FileName);然后是我在问题中提到的全部代码。我将问题的代码更改为您的代码。在我运行程序后,没有结果图像,只有一个不受支持的jpg文件。很抱歉,编写得很复杂,因为这是注释空间。