Sdílet prostřednictvím


Regulární výrazy v jazyce C# a F#

Vyhodnocení spravovaných výrazů přijímá většinu výrazů, které jsou napsané v jazyce C#.

Přesto, vyhodnocení spravovaných výrazů nerozeznává výrazy jazyka F#.V případě ladění F# je třeba před vložením výrazů do ladicího nebo dialogového okna přeložit výrazy do syntaxe jazyka C#.Při převodu výrazů z jazyka F# do jazyka C# je třeba pamatovat, že jazyk C# používá pro test rovnosti operátor ==, zatímco F# používá jediný =.

Následující oddíly poskytují specifické informace a diskutují některé typy výrazů, které nejsou podporovány nebo jsou podporovány jen částečně:

  • Přetypování

  • Dynamické objekty

  • Identifikátory a typy

  • Vyhodnocení metody

  • Operátory

  • Přetížené operátory

  • Vyhodnocení vlastnosti

  • Řetězce

  • Operátory typeof a sizeof

  • Prvky WebMethod

  • Vyhodnocení výrazů ignoruje modifikátory přístupu public, protected, internal a private .Je například možné volat metodu private z okna Kukátko.Vzhledem k tomu, že vyhodnocení výrazů ignoruje modifikátory přístupu, je možné, že bude vyvoláno neočekávané zatížení.

Vyhodnocení výrazů provádí všechna vyhodnocení v implicitním nebezpečném kontextu, bez ohledu na to, zda je kód, který je prováděn, bezpečný nebo nebezpečný.

Vyhodnocení výrazů také ignoruje kontrolované bloky a /checked možnosti kompilátoru.Všechny výrazy jsou vyhodnocovány v nekontrolovaném kontextu.

Je možné přizpůsobit zobrazení vlastních datových typů pomocí atributů.Další informace naleznete v tématu Zobrazení vlastních datových typů.

Přetypování

Jednoduché výrazy přetypování fungují v ladicím programu:

(A)x

Přetypování, která se týkají ukazatelů, nefungují v ladicím programu.

Dynamické objekty

Vyhodnocení výrazů může vyhodnotit proměnné, které jsou staticky zadané jako dynamické.Může také vyhodnotit objekty, které implementují rozhraní IDynamicObject.Jestliže jsou objekty, které implementují rozhraní IDynamicObject, vyhodnoceny v okně Kukátko, uzel Dynamického zobrazení je přidán.Uzel Dynamického zobrazení obsahuje členy objektu, ale neumožňuje úpravy hodnot členů.

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

  • Složené operátory +=, -=, %=, /= a *=

  • Mnoho přetypování, včetně číselných přetypování a přetypování s typovým argumentem

  • Volání metody s více než dvěma argumenty

  • Mechanismy získání vlastnosti s více než dvěma argumenty

  • Nastavení vlastnosti s argumenty

  • Přiřazení do indexeru

  • Logické operátory && a ||

Identifikátory a typy

Výrazy ladicího programu můžou použít libovolný identifikátor viditelný v aktuálním rozsahu.Při zastavení ladicího programu v metodě Magh, je například možné použít libovolný identifikátor viditelný v Magh, včetně konstant, názvů proměnných a názvů metod.

Ladicí program může správně zobrazit všechny proměnné primitiv, enum nebo vnitřních typů.Pro proměnné typu třída, ladicí program správně zobrazí hodnotu v závislosti na nejvíce odvozeném typu.Pokud je objekt leo typu Lion, odvozeného od Cat, je možné vyhodnotit leo.Claws a získat správnou hodnotu pro objekt typu Lion.

Libovolnému levému výrazu, je možné přiřadit novou hodnotu, která je l-hodnota.To zahrnuje primitiva, třídy a typy System.Object.

Vyhodnocení metody

Ladicí program podporuje vyhodnocení metod, včetně metod přetížených.Proto je možné zadat jeden z následujících výrazů a ladicí program bude volat správné verze přetížených metod:

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

Vyhodnocení metody v ladicím programu ve skutečnosti volá a spouští kód pro danou metodu.Pokud má metoda vedlejší účinky, vyhodnocení metody v okně ladicího programu změní stav aplikace, což může vést k neočekávaným výsledkům.

Pokud je nastavena zarážka na přetíženou metodu, umístění zarážky závisí na tom, jak je metoda určena.Pokud je zadán úplný podpis (název metody a kompletní seznam argumentů), ladicí program nastaví jednu zarážku na zadané přetížení.Pokud je zadán pouze název metody, chování ladicího programu závisí na nastavení možností Visual Studio.Pokud není zaškrtnuto políčko Použit technologii IntelliSense pro ověření názvu funkce, nastaví ladicí program jednu zarážku na každé přetížení názvu metody.Jinak se otevře dialogové okno Zvolte zarážku, umožňující určit, na které přetížení je třeba umístit zarážku.Další informace naleznete v tématu Zarážky: Použití počtu volání, funkcí zásobníku volání a podmínek k libovolnému přerušení v ladicím programu sady Visual Studio.

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

Operátory

Ladicí program správně vyhodnotí většinu vestavěných operátorů, včetně:

  • Relační operátory a operátory rovnosti: ( expr1> expr2, expr1< expr2, expr1<= expr2, expr1=> expr2, expr1== expr2, expr1!= expr2).

  • Logické operátory: (expr1&& expr2, expr1|| expr2, expr1? expr2: expr3).

  • Aritmetické operátory: (expr1+ expr2,expr1- expr2, expr1* expr2, expr1/ expr2, expr1% expr2 ).

  • Logické operátory: (expr1& expr2, expr1^ expr2, expr1| expr2 ).

  • Operátory posunutí: (expr1>> expr2, expr1<< expr2 ).

  • Operátory přiřazení: ( lvalue= expr2,lvalue*= expr2,lvalue/= expr2, lvalue%= expr2, lvalue+= expr2, lvalue-= expr2, lvalue<<= expr2, lvalue>>= expr2, lvalue&= expr2, lvalue^= expr2, lvalue|= expr2).

  • Unární operátory: ( +expr1, - expr1, expr1++, ++expr1, expr1--, --expr1).

Přetížené operátory

Většina přetížených operátorů v ladicím programu funguje.

Přetížené infixové operátory +, -, /, % a & fungují:

  • expr1+ expr2

  • expr1- expr2

  • expr1/ expr2

  • expr1% expr2

  • expr1& expr2

Přetížené infixové operátory =, &&, & a || nefungují:

  • expr1= expr2

  • expr1&& expr2

  • expr1& expr2

  • expr1|| expr2

Přetížené infixové operátory << a >> nefungují, pokud jsou oba operandy třída:

  • object1 <<object2

  • object1>> object2

Přetížené prefixní operátory +, -, ++, --, !, a ~ fungují:

  • +expr1

  • -expr1

  • ++expr1

  • --expr1

  • !expr1

  • ~expr1

Přetížené sufixní operátory ++ a -- fungují:

  • expr1++

  • expr1--

Přetížené indexery fungují:

  • expr1[expr2]

Vyhodnocení vlastnosti

Ladicí program může vyhodnotit vlastnosti v jakémkoli okně proměnných.Přesto může mít vyhodnocení vlastnosti v ladicím programu vedlejší účinky, které mohou produkovat neočekávané a nežádoucí výsledky.K ochraně před vedlejšími účinky způsobenými náhodným vyhodnocením, je možné vypnout vyhodnocení vlastností v dialogovém okně Možnosti.

Řetězce

Ladicí program rozpoznává indexovaný operátor při použití s řetězci stejně jako s poli.Takže například je možné zadat:

"hello world"[0]

Okno Kukátko zobrazí správné hodnoty:

'h'

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

mystring.Length 

-nebo-

"hello world".Length

V jazyce C# je možné zřetězení řetězců:

"hello" + "world"

Operátory typeof a sizeof

Ladicí program podporuje operátory typeof a sizeof pomocí transformace do ekvivalentní funkce .NET Framework.

typeof ( expression)

je transformován do:

System.Type.GetType( expression)

Ladicí program poté vyhodnocuje transformovaný výraz.

Ladicí program podporuje operátor sizeof.

Prvky WebMethod

Není možné volat prvky WebMethod z oken ladicího programu.

Viz také

Další zdroje

Výrazy v ladicím programu

Referenční dokumentace jazyka C#