Ich habe ein Stück Code, mit der folgenden Logik:Was tun bei Verwendung von Contract.Assert (true) und die Methode muss etwas zurückgeben?
//pseudo-code
foreach (element in elementList) {
if (element is whatever)
return element;
}
}
In der Theorie gibt es immer ein Element, das, was auch immer ist, so dass diese Methode sollte keine Probleme bereiten. Auf jedem Fall habe ich eine Aussage am Ende des Verfahrens stellt nur sicher sein:
//pseudo-code
foreach (element in elementList) {
if (element is whatever)
return element;
}
}
Contract.Assert(false, "Invalid state!");
Das Problem ist, dass diese Methode etwas zurückgeben muß, und der Compiler nicht, dass die Behauptung nicht versteht wird die Programmausführung unterbrechen. Vor der Verwendung von Verträgen habe ich in solchen Situationen eine Exception geworfen, die das Problem gelöst hat. Wie würden Sie das mit Contract.Assert() handhaben? Zurückgeben von Null oder Standard (element_type) nach dem Aufruf von Contract.Assert() in dem Wissen, dass es nie aufgerufen wird und den Compiler herunterfährt? Oder gibt es eine andere elegantere Art, dies zu tun?
Dank
Wollen Sie damit sagen nicht 'Contract.Assert (false, "Invalid Zustand!");'? –
Ja, habe ich. : facep: –