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.