Ich habe eine Methode mit einem out
Parameter und ich möchte mit Contract.Ensures()
angeben, dass, wenn die Methode zurückgibt, der Parameter nicht null
ist.Wie spezifiziert man Sorgt für Out-Parameter?
Im Grunde ist dies:
void M(out object o)
{
Contract.Ensures(o != null);
o = new object();
}
Diese nicht kompilieren, weil es wie der Parameter sieht gelesen werden, bevor sie zugewiesen wird:
Fehler CS0269: Die Verwendung von nicht zugeordneten out-Parameter 'o'
ich dachte, ich könnte dieses Problem beheben, indem die Linien um Schalt, aber das funktioniert auch nicht:
Warnung CC1005: CodeContracts: Fehlerhafter Vertrag. Found Sorgt nach Zuweisung in der Methode 'M (System.Object @)'.
Gibt es einen Weg, dies zu tun?
Ich möchte nicht die Methode zu ref
wechseln. Ich kann den Wert nicht zurückgeben, anstatt out
zu verwenden, da die tatsächliche Methode, in der ich diese bereits vorfand, einen Rückgabewert hat: bool TryGetValue(TKey1 key1, TKey2 key2, out TValue value)
.
Welche C# Version verwenden Sie? – Karolis