Zrušení změn v F# 3.0
Toto téma popisuje nebezpečně změny kompilátoru a jazyka F# provedené ve verzi 3.0 pro vydání aplikace Visual Studio 2012.
Seznam nebezpečných změn
Následující tabulka vypisuje nebezpečné změny v jazyce F# 3.0.
Oblast nebezpečné změny |
Description |
---|---|
Odsazení |
Některé nesprávné odsazení, které bylo chybně přijato předchozí verzí kompilátoru jazyka F# způsobuje v aktuální verzi chybu při překladu.Úplný popis pravidel odsazení naleznete v tématu Kód formátování pokyny (F#). |
Nabídky, metody a vlastnosti struktur, které jsou místními proměnnými |
Nyní je chybou volat vlastnost nebo metodu struktury v nabídce, je-li tato struktura místní proměnnou.Předchozí verze jazyka F# toto chování umožňovaly.
Chcete-li tento požadavek obejít, vytvořte kopii místní proměnné, jak ukazuje následující příklad:
|
Rovnost nesprávných hodnot null |
V předchozích verzí bylo možné porovnávat hodnoty null za pomocí operátoru = bez ohledu na to, zda byly správnou či nesprávnou hodnotu typu.Správná hodnota null je hodnota null, kterou typ umožňuje; nesprávná hodnota null není platnou hodnotou typu.Současným chováním je vyvolání výjimky NullReferenceException při pokusu o použití operátoru = pro porovnání nesprávných hodnot null, jak ukazuje následující kód.
|
Komentáře a řetězce |
V předchozích verzích byl uzavírací token komentáře *) v trojnásobně uvozeném řetězci (řetězci používajícím """) analyzován jako součást řetězce.V současné verzi je token analyzován jako znak uzavření komentáře.Následující kód, který byl dříve přijat, bude proto dojít k chybě v aktuální verzi:
Další informace naleznete v tématu Řetězce (F#). |
Vlastnosti, které mají různé typy metod get a set. |
V dřívějších verzích jazyka F# kompilátor F# nesprávně povoloval metodám get a set mít typy, které se neshodovaly (například metoda get měla typ int a metoda set typ string).V jazyce F# 3.0 nahlásí kompilátor takovou deklaraci jako chybu. |