Verbatim řetězce (Verbatim string) - Co to je?

Verbatim řetězce (Verbatim string) - Co to je?

Příspěvekod Wlezley » 23 duben 2012 03:35:17

Možná jste si všimli, že v některých mých příkladech používám u řetězců obsahujících například cestu k souborům, takový zvláštní zápis se zavináčem @ před uvozovkami řetězce. Tomuto typu řetězce se říká verbatim řetězec, nebo-li verbatim string. Vypadá to například takhle:
Kód: Vybrat vše
string cestaKeSlozce = @"C:\Users\Public\Videos\";

Kdybych tam ten zavináč nenapsal, šlo by o klasický řetězec a musel by jeho zápis vypadat takto:
Kód: Vybrat vše
string cestaKeSlozce = "C:\\Users\\Public\\Videos\\";

Vidíte ten rozdíl? Proč se zdržovat zdvojováním escape znaků zpětných lomítek (tzv. backslash) například u cest, když můžu použít verbatim string a ušetřit si práci, že? :thumbup1:

Teď si blíže řekneme o tom, jak to vlastně funguje a co všechno od verbatim řetězců můžete čekat. Verbatim řetězec ignoruje všechny escape sekvence které znáte z klasických řetězců. Používá se zpravidla tehdy, kdy potřebujeme napsat nějaký dlouhý řetězec, který by obsahoval spoustu escape sekvencí. Samozdřejmně by to šlo zapsat i do klasických řetězců, jak jsem již zmiňoval, ale byla by to celkem zbytečná práce navíc.

POZOR!
Protože verbatim řetežce ignorují escapování klasických stringů, vždy se ukončují uvozovkami ". To znamená, že normální escape sekvence pro uvozovky \" bude ignorována, verbatim strig by se tímto ukončil a poslední zapsaný znak v něm by byl \ (backslash). Pokud tedy chceme napsat ve verbatim stringu uvozovky " musíme je takto zdvojit "" - to je jediná escape sekvence, kterou lze ve verbatim řetězcích použít. :tongue_ss:
Uživatelský avatar
Wlezley
 
Příspěvky: 316
Registrován: 24 září 2011 22:54:46
Bydliště: Plzeň
Projekt: Wlezley EU

Re: Verbatim řetězce (Verbatim string) - Co to je?

Příspěvekod Wlezley » 23 duben 2012 20:20:05

Ještě mě tak teď napadla jedna věc, která by Vás mohla zajímat a může se hodit.
S verbatim stringem totiž můžete udělat například i tohle:
RAW CODE
string abc = @"radek jedna
radek dva
radek tri
radek ctyri
radek pet";
...což u klasického stringu nejde. :tongue_ss:
Uživatelský avatar
Wlezley
 
Příspěvky: 316
Registrován: 24 září 2011 22:54:46
Bydliště: Plzeň
Projekt: Wlezley EU


Zpět na C# (C sharp)

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


cron