यहां समस्या यह है कि आप डिलीमीटर को क्रमबद्ध नहीं करते हैं। जोड़ें:
w.Write(delimiter)
आपकी लिखने की विधि में पहली पंक्ति के रूप में और
delimiter = r.ReadString();
आपकी पठन विधि में पहली पंक्ति के रूप में।
सुझाए गए वर्कअराउंड के लिए आपके प्रश्नों के संबंध में:
यह नहीं। यह केवल आपके परीक्षण परिदृश्य के साथ काम करता है।
लिखने की विधि को पठन विधि के साथ संगत होना चाहिए। यदि आप दो तार लिखते हैं और केवल एक पढ़ते हैं तो यह काम नहीं करेगा। यहां विचार यह है कि आपकी वस्तु को स्मृति से हटाया जा सकता है और फिर लोड किया जा सकता है। यह वही है जो लिखना और पढ़ना करना है। आपके मामले में - यह वास्तव में हो रहा था और आप वस्तु का मूल्य नहीं रख पा रहे थे।