Udostępnij za pośrednictwem


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.

Zobacz też

Inne zasoby

Wyrażenia w debugerze

C# odniesienia