Wyrażenia w języku C# i F#
Oceniający zarządzanych wyrażenia akceptuje większość wyrażeń napisany w języku C#.
Oceniający wyrażenie zarządzanych nie rozpoznaje F# wyrażeń, jednak.Debugowania F#, należy przetłumaczyć wyrażenia w języku C# składni przed wejściem wyrażenia w polu okna lub okna dialogowego debugera.Podczas tłumaczenia jest wyrażeń F# C#, należy pamiętać, że C# używa == operator równości, badanie natomiast F# wykorzystuje pojedynczy =.
W poniższych sekcjach oferują określonych informacji i omówić niektóre typy wyrażenie, które nie są obsługiwane lub częściowo obsługiwane:
Casts
Dynamic Objects
Identifiers and Types
Method Evaluation
Operators
Overloaded Operators
Property Evaluation
Strings
typeof and sizeof Operators
WebMethods
Ignoruje oceniającego wyrażenie public, protected, internal, i private modyfikatorów dostępu.Można wywołać private metodę z Watch okna, na przykład.Ponieważ oceniającego wyrażenie ignoruje modyfikatorów dostępu, jest możliwe nieoczekiwany obciążenia, powoływać.
Oceniający wyrażenie wykonuje wszystkie oceny w niejawnego kontekstu niebezpieczne, czy kod wykonywany jest bezpieczny lub niebezpieczny.
Oceniający wyrażenie ignoruje także zaznaczone bloki i /checked opcję kompilatora.Wszystkie wyrażenia są oceniane w kontekście niezaznaczone.
Można dostosować wyświetlanie niestandardowych typów danych przy użyciu atrybutów.Aby uzyskać więcej informacji, zobacz Wyświetlanie niestandardowe typy danych.
Poświaty
Praca oddanych prostych wyrażeń w debugerze:
(A)x
Poświaty, które obejmują wskaźniki, które nie działają w debugerze.
Obiekty dynamiczne
Wyrażenie oceniający może służyć do zmiennych, które są statycznie wpisywane jako dynamiczny.On również ocenić obiektów implementujących interfejs IDynamicObject.Kiedy obiekty, które implementują interfejs IDynamicObject są oceniane w Watch okna, dynamiczny widok, węzeł jest dodawany.Węzeł dynamiczny widok pokazuje członków obiektu, ale nie zezwala na edytowanie wartości składników.
Następujące funkcje obiekty dynamiczne nie są obsługiwane:
Operatory mieszanek +=,-=, % = / =, a * =
Wiele prezentacji, w tym numeryczne poświaty i poświaty argument typu
Wywołania metody z więcej niż dwóch argumentów
Właściwości pobierające z więcej niż dwóch argumentów
Ustawiające właściwość z argumentami
Przypisywanie do indeksowania
Operatory logiczne && i||
Identyfikatory i typów
Wszelkie widoczne identyfikatora można użyć, debuger wyrażeń w bieżącym zakresie.Jeśli debuger zostanie zatrzymana w metodzie Magh, na przykład, można użyć jakichkolwiek widocznych w ramach identyfikator Magh, w tym stałe, nazwy zmiennych i nazwy metody.
Debuger może poprawnie wyświetlać dowolnej zmiennej pierwotny, enum lub typu wewnętrznego.W przypadku zmiennych typu klasy debugera poprawnie wyświetlana jest wartość typu większości uzyskane na podstawie.Jeśli obiekt leo typu Lion, z typu pochodnego Cat, można ocenić leo.Claws i uzyskać prawidłową wartość dla obiektu typu Lion.
Można przypisać nowej wartości po lewej stronie wyrażenie, która jest wartością l.Obejmuje to pierwotny, klasy i System.Object typów.
Metody oceny
Debuger obsługuje oceny metod, w tym metody przeciążane.W związku z tym można wprowadzić jedną z następujących wyrażeń i debuger będzie wywoływać metody przeciążane poprawnej wersji:
Time.Set();
Time.Set(atime);
Faktycznie oceny metody w debugerze wywołuje i wykonuje kod dla tej metody.Jeśli metoda efekty uboczne, oceny metody w oknie Debuger zmieni stan programu, który może dać nieoczekiwane wyniki.
Po ustawieniu punkt przerwania na metodzie przeciążonej lokalizacji punkt przerwania zależy sposób określania metody.Jeśli określisz pełną podpis (nazwa metody i argument pełnej listy), debuger ustawia jeden punkt przerwania na przeciążenie określony.Jeśli określisz tylko nazwy metody debugera zachowanie zależy od Visual Studio ustawienie opcji.Jeśli Wykorzystania IntelliSense, aby zweryfikować nazwę funkcji pole wyboru nie jest zaznaczone, debuger określi jeden punkt przerwania każdego przeciążenie nazwa tej metody.W przeciwnym razie Wybierz punkt przerwania zostanie otwarte okno dialogowe, co pozwala określać, które overload(s), aby umieścić punkt przerwania na.Aby uzyskać więcej informacji, zobacz Jak: Ustawianie punktu przerwania funkcji.
Tworzenie nowych metod anonimowe nie jest obsługiwane w debugerze w tej wersji Visual Studio.
Operatory
Debuger poprawnie wynikiem najbardziej wbudowanych operatorów, w tym:
Relational and equality operators: ( expr1> expr2, expr1< expr2, expr1<= expr2, expr1=> expr2, expr1== expr2, expr1!= expr2).
Boolean operators: (expr1&& expr2, expr1|| expr2, expr1? expr2: expr3).
Arithmetical operators: (expr1+ expr2,expr1- expr2, expr1* expr2, expr1/ expr2, expr1% expr2 ).
Logical operators: (expr1& expr2, expr1^ expr2, expr1| Wyr2 ).
Shift operators: (expr1>> expr2, expr1<< expr2 ).
Assignment operators: ( lvalue= expr2,lvalue*= expr2,lvalue/= expr2, lvalue%= expr2, lvalue+= expr2, lvalue-= expr2, lvalue<<= expr2, lvalue>>= expr2, lvalue&= expr2, lvalue^= expr2, lvalue|= expr2).
Unary operators: ( +expr1, - expr1, expr1++, ++expr1, expr1--, --expr1).
Przeciążone operatory
Najbardziej przeciążone operatory pracy w debugerze.
Przeciążone operatory infiks +, -, /, %, a & czas pracy:
Wyr1+ Wyr2
Wyr1- Wyr2
Wyr1/ Wyr2
Wyr1% Wyr2
Wyr1& Wyr2
Przeciążone operatory infiks =, & & &, a ||, nie działają:
Wyr1= Wyr2
Wyr1&& Wyr2
Wyr1& Wyr2
Wyr1|| Wyr2
Przeciążone operatory infiks << i >> nie działają, jeśli oba operandy są zmienne klasy:
Obiekt1 <<object2
Obiekt1>> object2
Przeciążone operatory przedrostkowe +, -, ++,--,!, i ~ pracy:
+Wyr1
-Wyr1
++Wyr1
--Wyr1
!Wyr1
~Wyr1
Przeciążone operatory sufiks ++ i--pracy:
Wyr1++
Wyr1--
Indeksatory przeciążony pracy:
- Wyr1[Wyr2]
Ocena właściwości
Debuger może służyć do właściwości w dowolnym oknie zmiennej.Jednak oceny właściwości w oknie Debuger może mieć skutki uboczne, które produkują nieprzewidziane i niepożądane wyniki.Do ochrony przed spowodowanych przypadkowym oceny skutków ubocznych, można wyłączyć oceny właściwości Opcje okno dialogowe.
Ciągi znaków
Debuger rozpoznaje indeksowanych operator używanego z ciągów znaków, jak również tablic.Tak na przykład, można wprowadzić:
"hello world"[0]
Watch w oknie zostaną wyświetlone prawidłowe wartości:
'h'
W języku C#, w przeciwieństwie do macierzystych C/C++ można edytować wartość string w debugerze.Ponadto można użyć Length operatora na ciąg znaków:
mystring.Length
- lub -
"hello world".Length
W języku C# można łączyć ciągi znaków:
"hello" + "world"
Operatory typeof i sizeof
Debuger obsługuje typeof i sizeof operatora przez przekształcania odpowiednik .NET Framework funkcji.
typeof ( wyrażenie)
jest przekształcany w:
System.Type.GetType( wyrażenie)
Debuger następnie oblicza wyrażenie to przekształcone.
Debuger obsługuje sizeof operatora.
Elementów WebMethod
Nie można wywoływać elementów WebMethod z debugger systemu windows.