Anhand eines Dictionarys wird eine Config geladen und gespeichert.

 class Program
{
//Trennzeichen festlegen
private const string _recordDelimiter = "\r\n";
private const char _splitDelimiter = '=';
private const string _filePath = "settings.conf";

static void Main(string[] args)
{
//Prüfen ob Settings-Datei existiert
if (File.Exists(_filePath))
{
//Dictionary erstellen (einfacher Abruf der Werte über den Schlüssel + Keine doppelten Schlüssel mögl.)
Dictionary<string, string> Settings = new Dictionary<string, string>();

//Datei einlesen und in Dictionary eintragen
foreach (string s in File.ReadAllLines(_filePath))
//Nur eintragen wenn Key nicht schon eingetragen wurde und der Splitdelimiter in der Zeile vorhanden ist
if (s.Contains(_splitDelimiter))
if (!Settings.ContainsKey(s.Split(_splitDelimiter)[0]))
Settings.Add(s.Split(_splitDelimiter)[0], s.Split(_splitDelimiter)[1]);
else
//Ansonsten zb. den Wert für den Key nur aktualisieren
Settings[s.Split(_splitDelimiter)[0]] = s.Split(_splitDelimiter)[1];

//Wert ausgeben oder benutzen
Console.WriteLine("Username = " + Settings["Username"]);

/* 1337 LinQ zum Joinen des Dictionarys benutzen
* Erklärung:
* Ihr Joint zuerst die Schlüssel mit den Werten anhand des splitDelimiters (hier '='),
* dann werden alle Datensätze mit dem recordDelimiter gejoined (hier ein Zeilenumbruch im Windowsformat)
* Mit dem LinQ 'Select' wählt ihr die Keys und Values aus und im 1. Select werden diese Formatiert
*/
string saveString = string.Join(_recordDelimiter, Settings.Select(k => k.Key + _splitDelimiter + string.Join(string.Empty, k.Value.Select(v => v))));

//Das Ganze in einer Datei abspeichern
File.WriteAllText(_filePath, saveString);
}
Console.ReadLine();
}
}