W poniższym kodzie:Dlaczego debugger programu Visual Studio nie może poprawnie oceniać wyrażeń zawierających typowe argumenty typu?
private static void Main(string[] args)
{
var listy = new List<DateTime> { DateTime.Now };
MyMethod(listy);
}
static void MyMethod<T>(List<T> myList)
{
// put breakpoint here
}
Jeśli złamię w debugger, otwartą QuickWatch na "myList", widzę:
myList
[0]
Raw View
Gdybym wybierz "[0]" węzeł i kliknij Dodaj Watch, ekspresji, która jest dodawana do Watch:
(new System.Collections.Generic.Mscorlib_CollectionDebugView<System.DateTime>(myList)).Items[0]
wyrażenie to wydaje się słuszne, a jednak, okno zegarek pokazuje th e następujący błąd:
The best overloaded method match for 'System.Collections.Generic.Mscorlib_CollectionDebugView.Mscorlib_CollectionDebugView(System.Collections.Generic.ICollection)' has some invalid arguments
To wygląda na błąd w debugerze. Dlaczego to się dzieje? I czy jest to udokumentowane w dowolnym miejscu?
Ma problemy z myList w jakiś sposób działa, jeśli używasz zmiennej statycznej. Opublikuj na connect.microsoft.com –
Microsoft [oznaczono raport o błędzie, który zgłosiłem jako Naprawiono] (https://connect.microsoft.com/VisualStudio/feedback/details/684678/visual-studio-debugger-c-expression-evaluator- doesnt-work-with-bound-generic-types), więc mam nadzieję, że tak się nie stanie w dev11. –