2012-04-07 38 views
0

如何儲存(保存)一個變量,以便在關閉並再次運行程序後使用它?我無法使用saveFileDialog,因爲它是2D數組。其他程序有其自己的擴展名。我也可以自己做擴展嗎?像「將項目另存爲...」。另存爲項目

+0

不能保存的變量。 – idish 2012-04-07 11:41:17

+0

@idish - 那該怎麼做? – 2012-04-07 11:43:24

+0

爲防萬一您不知道(因爲您詢問了有關'製作'的擴展名),文件擴展名只是所使用格式的_indicators_,這樣Windows資源管理器就可以更輕鬆地打開它,並且您可以根據自己的需要實際命名它們。如果我沒有記錯,Adobe的.AI格式是PDF。爲文件分配自己的擴展名只是爲了將其與您的程序關聯起來,即使它實際上只是一個文本文件或其他東西,也是有用的。 – 2012-04-07 12:40:39

回答

1

如果要將某個對象保存到磁盤,則需要爲數據設計一些文件格式,或者使用其中一種現有的通用格式。

在.NET中,可能是最簡單的方法是使用the binary formatter做到這一點:

void Save(SomeType obj, string fileName) 
{ 
    using (var stream = File.OpenWrite(fileName)) 
    { 
     var formatter = new BinaryFormatter(); 
     formatter.Serialize(stream, obj); 
    } 
} 

obj對象和所有對象引用它必須是可序列化。大多數原始類型已經是可序列化的,您可以使用the [Serializable] attribute來創建自己的類型。

Load()方法將是類似的,除了將使用File.OpenRead()formatter.Deserialize()

如何選擇文件名取決於您,但您肯定可以使用SaveFileDialog

1

.NET中有不同的排列類型。每個人都有其優點和缺點。所以你應該選擇一個最適合你的需求。 這是值得花時間,至少得到這些的一般概述。

例如:

最常見的方法是二進制序列化(通過svick提供的),它速度快,低內存佔用,但它絕對不夠靈活,其他人在可擴展性方面。原因 標準.NET序列化也保存類型信息,這導致與類型保存並且不僅數據的韌性耦合。

在一個前面回答很難解釋一切,所以我建議你看看這裏

Serialization and Types of Serialization in .Net

好運

+0

這些並不是唯一可能的序列化格式。您也可以使用一些外部庫來將對象序列化爲JSON或協議緩衝區。也許有很多其他格式我沒有聽說過。 – svick 2012-04-08 12:01:17

+0

當然,這些是內置的+你有所有其他的第三部分庫。 – Tigran 2012-04-08 12:46:28