Ich würde gerne wissen, warum der erste Anruf an nicht funktioniert und der zweite tut. Scheint dumm, wenn ich bedenke, dass ich einen Typ object
in beide Richtungen übergebe, und die Übergabe in einem anonymen Typ an Foo(object)
funktioniert gut. Warum würde ref
, etwas, das mit Speicherstandort zu tun hat, die Aufrufe von Bar()
beeinflussen?Kann ich ein anonymes Objekt in eine Methode übergeben, die einen Referenzparameter vom Typ Objekt erwartet?
Betrachten Sie das folgende Snippet:
static void Foo(object obj)
{ }
static void Bar(ref object obj)
{ }
static void Main()
{
// Compiles
var a = new { };
Foo(a);
// Does not compile
var b = new { };
Bar(ref b);
// Compiles
object c = new { };
Bar(ref c);
}
ich in den Antworten siehe unten Vorschläge, wie Sie den Code der Kompilierung zu machen, aber das ist nicht das, was ich bin nach. Ich würde gerne wissen, warum die Erstellung eines ref
Parameter verhindert Kompilierung bei der Übergabe in einem anonymen Typ an Foo()
hat gut funktioniert.
danke. Aber anonym an "Foo (object)" zu kommen, war kein Problem. Warum verhindert die Angabe eines 'ref' die Kompilierung? – Didaxis
Ich könnte die Spezifikation, aber das Beispiel sollte es klar machen, warum es _should_ scheitern sollte. –
Danke, Ihre Antwort ist gleich gut, aber ich schätze die Spezifikationsangabe unten. Danke jedenfalls, ich upvoted das :) – Didaxis