Ich formuliere mein Beispiel in generischen Begriffen, weil es den Punkt ohne Berücksichtigung meiner spezifischen Problemdetails vermittelt.Strong-Typisierung für Strings oder andere versiegelte Klassen
Angenommen, Sie hatten eine Reihe von Methoden, die Strings als Parameter verwenden. Angenommen, eine Zeichenfolge wäre der "Vorname" einer Person und eine andere wäre der "Nachname" einer Person. Es könnte andere Saiten wie "Lieblingsessen" geben.
Jetzt, in Ihrem Code, finden Sie weiterhin Laufzeitfehler, weil Sie die Parameter durcheinander bringen. Sie können die Reihenfolge von "Vorname" und "Nachname" ändern oder eine verwenden, wenn Sie die andere verwendet haben sollten. Der Wert von stark typisierten Sprachen besteht darin, dass diese Fehler zur Build-Zeit und nicht zur Laufzeit gefunden werden.
Also eine mögliche Lösung wäre, nur Klassen aus String abzuleiten.
public class FirstName : String
{
}
public class LastName : String
{
}
Jetzt, wenn Sie die falsche Art der Zeichenfolge übergeben würde der Compiler beschweren. Dies ist nicht möglich, da String versiegelt ist. Auch die "using" -Anweisung wird nicht funktionieren (denke ich), weil der Compiler nicht beschweren wird, wenn ich sie verwechsle.
using LastName = String;
Sicher, konnte ich Klassen bauen, die die Zeichenfolge wickeln und dann werfen Konvertierungsmethoden schreiben, aber das scheint wie mehr Mühe, als es wert ist.
Bitte prägen Sie Ihre Titel nicht mit "C#" und so weiter. Dafür sind die Tags da. –
Warum verwenden Sie nicht benannte Argumente (die in der VS2010-Version von C# eingeführt wurden), um das Umstellen oder Sortieren von Parameterproblemen zu vermeiden, statt das Leben mit einer stärkeren Typisierung schwer zu machen? http://msdn.microsoft.com/en-us/library/dd264739.aspx –