Sdílet prostřednictvím


Výrazy v jazyce C# a F#

Vyhodnocení výrazu spravované přijímá většinu výrazy napsané v jazyce C#.

Vyhodnocení výrazu spravované F# výrazy, ale nerozpozná.Jestliže ladíte F#, je třeba přeložit do syntaxe jazyka C# výrazech před zadáním výrazy do pole ladicí okno nebo dialogové okno.Když převádíte výrazy z F# C#, nezapomeňte Pamatujte, že C# používá == test rovnosti, zatímco F# = jeden používá operátor.

Následující oddíly nabízejí konkrétní informace a diskutovat o některé typy výrazů, které jsou podporovány nebo částečně podporovány:

  • Casts

  • Dynamic Objects

  • Identifiers and Types

  • Method Evaluation

  • Operators

  • Overloaded Operators

  • Property Evaluation

  • Strings

  • typeof and sizeof Operators

  • WebMethods

  • Vyhodnocení výrazu ignoruje public, protected, internal, a private modifikátory přístupu.Můžete volat private metoda z sledovat okna, například.Protože vyhodnocení výrazu ignoruje modifikátory přístupu, je možné neočekávané zatížení být.

Vyhodnocení výrazu provádí implicitní kontextu unsafe všechna hodnocení, zda je kód spuštěn bezpečné nebo nebezpečné.

Vyhodnocení výrazu také ignoruje kontrolované bloky a /checked volba kompilátoru.Všechny výrazy jsou vyhodnocovány v Nekontrolovaná kontextu.

Můžete upravit zobrazení vlastní typy dat pomocí atributů.Další informace naleznete v Zobrazení vlastní datové typy.

Nádech

Osazení jednoduché výrazy pracují v debuggeru:

(A)x

Nádech, které se týkají ukazatelů nefungují v debuggeru.

Dynamické objekty

Vyhodnocení výrazu lze vyhodnotit proměnné, které jsou staticky zadávané jako dynamické.Lze hodnotit také objekty, které implementují rozhraní IDynamicObject.Když jsou objekty, které implementují rozhraní IDynamicObject vyhodnocovány v sledovat okno dynamické zobrazení přidán uzel.Dynamické zobrazení uzlu objektu členy se zobrazí, ale neumožňuje úpravy hodnot členů.

Následující funkce dynamických objektů nejsou podporovány:

  • Operátory složené +=,-=, % = / =, a * =

  • Mnoho nádech, včetně nádech číselný argument typ nádech

  • Volání metody s více než dva argumenty.

  • Mechanismy získání vlastnosti s více než dva argumenty.

  • Nastavení vlastností s argumenty

  • Přiřazení indexovací člen.

  • Logické operátory && a||

Typy a identifikátory

Debugger výrazy můžete použít libovolný identifikátor viditelné v aktuálním oboru.Pokud debugger je zastavena v metodě Magh, například můžete použít libovolný identifikátor viditelný v Magh, včetně metody názvy, názvy proměnných a konstant.

Ladicí program správně zobrazit všechny proměnné základní, výčtu nebo typ vnitřní.Pro proměnné typu třídy debugger správně zobrazí hodnoty založené na typu odvozené většinu.Pokud máte objekt leo typu Lion, odvozený z typu Cat, je možné vyhodnotit leo.Claws a získat správné hodnoty pro objekt typu Lion.

Na levém výraz, který je l hodnota můžete přiřadit novou hodnotu.To zahrnuje základní třídy, a System.Object typy.

Metody hodnocení

Ladicí program podporuje hodnocení metod, včetně metod přetížené.Proto můžete zadat buď následující výrazy a ladicí nástroj bude volat správnou verzi přetížené metody:

Time.Set();
Time.Set(atime);

Metoda v debuggeru hodnocení skutečně volá a spustí kód pro danou metodu.Pokud metoda má vedlejší účinky, bude ladicí okno metoda hodnocení změnit stav programu, což může vést k neočekávaným výsledkům.

Pokud nastavíte zarážku na přetížená metoda, umístění zarážka závisí na jak určit metodu.Zadáte úplný podpis (název metody a argument úplný seznam), nastaví debugger určený přetížení jednu zarážku.Pokud zadáte název metody, chování ladicího programu závisí na Visual Studio možnosti nastavení.Pokud Použití technologie IntelliSense ověřte název funkce není zaškrtnuto políčko, bude ladicí program nastavit jednu zarážku každý přetížení název metody.Jinak Vyberte zarážku se otevře dialogové okno umožňující určit, které overload(s) do zarážka.Další informace naleznete v tématu Jak: nastavení funkce zarážky.

Vytvoření nové anonymní metody nejsou podporovány v ladicím programu v této verzi Visual Studio.

Operátory

Ladicí program správně vyhodnotí nejvíce vestavěné operátorů, včetně:

  • 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| Výraz2 ).

  • 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).

Přetížené operátory

Nejvíce přetížené operátory pracují v debuggeru.

Přetížené operátory zaváděcí +, -, /, %, a & práce:

  • Výraz1+ Výraz2

  • Výraz1- Výraz2

  • Výraz1/ Výraz2

  • Výraz1% Výraz2

  • Výraz1& Výraz2

Přetížené operátory zaváděcí =, & & &, a ||, nefungují:

  • Výraz1= Výraz2

  • Výraz1&& Výraz2

  • Výraz1& Výraz2

  • Výraz1|| Výraz2

Přetížené operátory zaváděcí << a >> Pokud jsou oba operandy proměnné třídy nefungují:

  • Objekt1 <<object2

  • Objekt1>> object2

Přetížení předponové operátory +, -, ++,--,!, a ~ práce:

  • +Výraz1

  • -Výraz1

  • ++Výraz1

  • --Výraz1

  • !Výraz1

  • ~Výraz1

Přetížení přípona operátorů ++ a--práce:

  • Výraz1++

  • Výraz1--

Indexování Přetížená práce:

  • Výraz1[Výraz2]

Vlastnost hodnocení

Ladicí program lze vyhodnotit vlastnosti v okně všechny proměnné.Vlastnosti v debuggeru hodnocení může mít vedlejší účinky, které neočekávané a nežádoucí výsledky.Chcete-li chránit proti vedlejší účinky způsobené náhodným hodnocení můžete vypnout vlastnost hodnocení Možnosti dialogové okno.

Řetězce

Ladicí program rozpoznává operátor Indexované při použití s řetězci, stejně jako matice.Takže například můžete zadat:

"hello world"[0]

Sledovat okno zobrazí správné hodnoty:

'h'

V jazyce C#, na rozdíl od nativní C/C++ můžete upravit hodnotu řetězce v debuggeru.Kromě toho můžete použít Length operátor na řetězec:

mystring.Length 

-nebo-

"hello world".Length

V jazyce C# je zřetězení řetězců:

"hello" + "world"

Provozovatelé typeof a sizeof

Podporuje ladicí program typeof a sizeof operátor transformací do odpovídající .NET Framework funkce.

typeof ( výraz)

transformaci:

System.Type.GetType( výraz)

Ladicí program vyhodnocuje transformovaný výraz.

Podporuje ladicí program sizeof operátor.

Prvkům WebMethod

Prvkům WebMethod nelze volat z ladicí program systému windows.

Viz také

Další zdroje

Výrazy v debuggeru

C#-Reference