Mi piacerebbe sapere perché la prima chiamata a Bar(ref object)
non funziona e la seconda. Sembra sciocco considerando che sto passando in un tipo e e passando in un tipo anonimo a Foo(object)
funziona bene. Perché ref
, qualcosa che ha a che fare con la posizione della memoria influenza le chiamate a Bar()
?Posso passare un oggetto anonimo in un metodo che si aspetta un parametro di riferimento di tipo oggetto?
Si consideri il seguente frammento di codice:
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);
}
vedo nelle risposte qui sotto suggerimenti su come rendere il codice di compilazione, ma non è quello che sto cercando. Mi piacerebbe sapere in modo specifico perché renderlo un parametro ref
impedisce la compilazione quando il passaggio di un tipo anonimo a Foo()
ha funzionato correttamente.
grazie. Ma passare in anonimo a 'Foo (oggetto)' non era un problema. Perché quando si effettua il parametro a 'ref' si impedisce la compilazione? – Didaxis
Potrei localizzare le specifiche ma l'esempio dovrebbe chiarire perfettamente il motivo per cui _should_ fallirebbe. –
Grazie, la tua risposta è ugualmente buona, ma apprezzo la citazione delle specifiche qui sotto. Grazie comunque, ho svuotato questo :) – Didaxis