Do bên dưới giao diện điều khiển chương trình:Tại sao Action.Method.IsStatic khác nhau giữa Visual Studio 2013 và năm 2015 đối với lambda nhất định biểu thức
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);
}
}
Khi biên dịch chống lại Net 4.5.2 sử dụng VS 2013, nó sẽ in
t.Method.IsStatic: true
Khi biên dịch chống lại Net 4.5.2 sử dụng VS 2015, nó sẽ in
t.Method.IsStatic: false
Từ this câu hỏi, tôi hiểu những gì đang xảy ra, nhưng tôi bối rối tại sao có sự thay đổi trong hành vi giữa các phiên bản của VS. Từ sự hiểu biết của tôi, sản lượng 2013 là chính xác.
Yup, đó là vấn đề. Thật không may, điều này gây ra vấn đề lạ nếu bạn sử dụng WeakReferences. – MattS
@MattS hmmm, bạn có thể xây dựng trên đó không? –
@MattS Khi bạn dựa vào hành vi không có giấy tờ, bạn nên mong đợi các vấn đề. – svick