Dato il programma di console di seguito:Perché Action.Method.IsStatic diversa tra Visual Studio 2013 e il 2015 per alcune espressioni lambda
class Program
{
private static string _value;
static void Main(string[] args)
{
var t = new Action(() => _value = "foo");
Console.Out.WriteLine("t.Method.IsStatic: {0}", t.Method.IsStatic);
}
}
Quando compilato contro .Net 4.5.2 utilizzando VS 2013, stamperà
t.Method.IsStatic: true
Quando compilato contro .Net 4.5.2 utilizzando VS 2015, verrà stampata
t.Method.IsStatic: false
Da 01.237.280,954 miladomanda, in qualche modo capisco cosa sta succedendo, ma sono confuso perché c'è un cambiamento nel comportamento tra le versioni di VS. Da quanto ho capito, l'output del 2013 è corretto.
Sì, questo è il problema. Sfortunatamente, questo causa strani problemi se usi WeakReferences. – MattS
@MattS hmmm, puoi approfondire? –
@MattS Quando ci si basa su comportamenti privi di documenti, è necessario prevedere problemi. – svick