F1. Hasznos táblázatok F1.1 C# kulcsszavak abstract
as
base
bool
break
byte
case
catch
char
checked
class
const
continue
decimal
default
delegate
do
double
else
enum
event
explicit
extern
false
finally
fixed
float
for
foreach
goto
if
implicit
in
int
interface
internal
is
lock
long
namespace
new
null
object
operator
out
override
params
private
protected
public
readonly
ref
return
sbyte
sealed
short
sizeof
stackalloc
static
string
struct
switch
this
throw
true
try
typeof
uint
ulong
unchecked
unsafe
ushort
using
virtual
void
volatile
while
Szövegkörnyezet-függő kulcsszavak (speciális jelentést hozdoznak a kódban, azonban nem foglalt szavak.) from
get
group
into
join
let
orderby
partial (típus)
partial (metódus)
select
set
value
where (generikus típus elem)
where (lekérdezés záradék)
yield
1
F1. FÜGGELÉK
F1.2 Előre definiált egyszerű és referencia-típusok Egész típusok Értékutótag
Típus
.NET típus
Ábrázolás
Értékkészlet
sbyte
System.Sbyte
8-bites, előjeles
-128 … 127
byte
System.Byte
8-bites, előjel nélküli
0 … 255
short
System.Int16
16-bites, előjeles
-32768 … 32767
ushort System.Uint16 16-bites, előjel
0 … 65535
nélküli char
System.Char
16-bites, előjel nélküli, Unicode
'\u0000' … '\uffff'
int
System.Int32
32-bites, előjeles
-2147483648 … 2147483647
uint
System.Uint32 32-bites, előjel nélküli
long
System.Int64
ulong
System.Uint64 64-bites, előjel nélküli
64-bites, előjeles
0 … 4294967295
u, U
-9223372036854775808 … 9223372036854775807
l, L
0 … 18446744073709551615
ul, UL lu, LU
Lebegőpontos típusok Pontoság Értékutótag (jegy)
Típus
.NET típus
Ábrázolás Értékkészlet
float
System.Single
32-bites
±1.5 × 10−45 … ±3.4 × 1038
7
f, F
double
System.Double
64-bites
±5.0 × 10−324 … ±1.7 × 10308
15-16
(d, D)
±1.0 × 10−28 … ±7.9 × 1028
28-29
m, M
decimal System.Decimal 128-bites
Logikai típus Típus .NET típus bool
2
Ábrázolás Értékkészlet
System.Boolean 8-bites
true, false
HASZNOS TÁBLÁZATOK
Referencia típusok Típus
.NET típus
Leírás
object
System.Object Minden előre definiált és felhasználó által készített típus a System.Object osztálytól származik.
string
System.String Nem módosítható unicode karaktersorozatok típusa.
F1.3 Escape karakterkódok Escape
Jelentés
\a
Unicode kódolás
vészjel
0x0007
\n
új sor
0x000A
\t
vízszintes tabulátor
0x0009
\v
függőleges tabulátor
0x000B
\b
visszatörlés
0x0008
\r
kocsi vissza
0x000D
\f
lapdobás
0x000C
\\
fordított perjel
0x005C
\'
aposztróf
0x0027
\"
idézőjel
0x0022
\0
nulla
0x0000
\xdddd
Unicode karakter
0xdddd
\udddd
Unicode karakter
0xdddd
\Udddddddd
Unicode karakter
0xdddddddd
F1.4 C# utasítások Kategória
C# kulcsszavak
Szelekciós utasítások
if, else, switch, case
Iterációs utasítások
do, for, foreach, in, while
Vezérlésátadó utasítások
break, continue, default, goto, return, yield
Kivételkezelő utasítások
throw, try-catch, try-finally, try-catch-finally
A checked és az unchecked utasítások
checked, unchecked
fixed utasítás
fixed
lock utasítás
lock
3
F1. FÜGGELÉK
F1.5 C# műveletek Műveletek csoportosítása Operátorok csoportja Aritmetikai Logikai (feltételes és bitenkénti) Karaktersorozatok összekapcsolása Növelés, csökkentés (léptetés) Biteltolás Összehasonlító Értékadás Tagelérés Indexelés Típus-átalakítás Feltételes Delegált hozzáadása és levétele Objektum-létrehozás Típusinformáció Túlcsordulás-kivétel vezérlése Indirektség és cím Különleges
Műveleti jelek +
-
& | true +
*
/
%
^ ~ false
!
++
--
<<
>>
==
!=
= |= .
+= ^=
<
>
&&
<=
-= *= /= <<= >>=
||
>= %=
&=
[] () ?: +
-
new as
is
checked *
->
??
=>
sizeof
typeof
unchecked []
&
Információk az operátorok túlterheléséhez Műveleti jel +, -, !, ~, ++, --, true, false +, -, *, /, %, &, |, ^, <<, >> ==, !=;
<, >;
<=, >=
&&, || [] () +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>= =, ., ?:, ->, new, is, as, sizeof, typeof
4
Túlterhelhetők igen igen igen (azonban csak páronként) nem nem (azonban indexelők készíthetők) nem (azonban új típus-átalakító operátor létrehozható: explicit/implicit) nem nem
HASZNOS TÁBLÁZATOK
Az operátorok precedenciája Műveletek
Asszociativitás
Operators
elsődleges
balról-jobbra
x.y, f(x), a[x], x++, x--, new, typeof, checked, unchecked, ->
egyoperandusú
balról-jobbra
+, -, !, ~, ++x, --x, (T)x, true, false, &, sizeof
multiplikatív
balról-jobbra
*, /, %
additív
balról-jobbra
+, -
biteltoló
balról-jobbra
<<, >>
összehasonlító és típustesztelő
balról-jobbra
<, >, <=, >=, is, as,
azonosságvizsgálat
balról-jobbra
==, !=
logikai ÉS
balról-jobbra
&
logikai kizáró VAGY
balról-jobbra
^
logikai VAGY
balról-jobbra
|
feltételes ÉS
balról-jobbra
&&
feltételes VAGY
balról-jobbra
||
feltételes
jobbról-balra
?:
értékadó és lambda
jobbról-balra
=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, ??, =>
Implicit (automatikusan végrehajtódó) numerikus típus-átalakítások Honnan
Hová
sbyte
short, int, long, float, double vagy decimal
byte
short, ushort, int, uint, long, ulong, float, double vagy decimal
short
int, long, float, double vagy decimal
ushort
int, uint, long, ulong, float, double vagy decimal
int
long, float, double vagy decimal
uint
long, ulong, float, double vagy decimal
long
float, double, vagy decimal
char
ushort, int, uint, long, ulong, float, double vagy decimal
float
double
ulong
float, double vagy decimal
5
F1. FÜGGELÉK
F1.6 C# módosítók Módosító
Használva
Jelentés
abstract
osztály metódus tulajdonság indexelő, esemény
Implementálatlan tagokat tartalmaz, nem példányosítható. Metódus, tulajdonság, indexelő és esemény esetén az implementálás hiányát jelzi az abstract osztályban.
delegate
metódusfej
Módosítóként metódus-hivatkozás (delegált) típusának készítése során használjuk.
explicit
operátor
A kulcsszót a felhasználó által definiált típus explicit (típus-átalakítási előírását igénylő) konverziót megvalósító operátorának készítése során használjuk.
extern
metódus
Külső (általában natív) definilálású metódus.
implicit
operátor
A kulcsszót a felhasználó által definiált típus implicit (automatikus, adatvesztés nélküli) konverziót megvalósító operátorának készítése során használjuk.
internal
típus, tag
A típus, valamint az osztály-, illetve struktúratag csak az aktuális szerelvényből (assembly) érhető el.
new
tag
Akkor használjuk, ha a származtatott osztályban el kívánjuk rejteni az alaposztály (base) örökölt elemeit. (Ez ugyan alapértelmezés, azonban üzenet figyelmeztet a new módosító alkalmazására.)
override
metódus tulajdonság indexelő, esemény
Szükséges az örökölt virtuális vagy absztrakt osztályelem (metódus, tulajdonság, indexelő vagy esemény) lecseréléséhez (bővítéséhez, módosításához).
partial
osztály struktúra, interfész metódus
Az megadott típus (class, struct vagy interface) definícióját több állományba helyezhetjük.
private
tag
Csak a tagot definiáló osztályon/struktúrán belül érhető el. (Alapértelmezett elérési mód a class és a struct típusokban.)
protected
tag, tulajdonság set része
Csak a tagot definiáló osztályból, illetve az osztályból származtatott osztályokból érhető el. (Struktúrában nem használható.)
protectedinternal tag
6
Segítségével a metódus lenyomatát (fejlécét) és az implementációját különböző résztípusokba helyezhetjük.
Az osztálytag csak az aktuális szerelvényből (assembly), illetve az osztályból származtatott típusból érhető el.
HASZNOS TÁBLÁZATOK
Módosító
Használva
Jelentés
public
tag
Mindenhonnan elérhető, ahonnan a tagot tartalmazó osztály elérhető – nincs korlátozás. (Alapértelmezett elérési mód az enum és az interface típusokban.)
readonly
adatmező
A readonly adatmező a deklarációban, illetve a tartalmazó osztály konstruktorában kaphat értéket.
sealed
osztály
Nem lehet alaposztály a sealed osztály, így nem származtatható belőle új osztály.
static
osztály metódus adatmező tulajdonság, operátor, esemény, konstruktor.
A static deklarálású osztály minden tagjának statikusnak kell lennie. A statikus tagok a típushoz (class, struct) tartoznak, így közösek az osztály példányai számára. A static kulccszó nem használható indexelőkhöz, destruktorokhoz, illetve nem class típusokhoz.
virtual
metódus tulajdonság indexelő, esemény
A megadott osztályelem (metódus, tulajdonság, indexelő és esemény) a származtatott osztályban lecserélhető (override).
volatile
adatmező
Több, egyidejűleg futó szállból módosítható a mező tartalma.
F1.7 C# előfordító direktívák Direktíva #if kifejezés #else #elif kifejezés #endif #define név #undef név #warning szöveg #error szöveg #line sorszám ["fájlnév"] | hidden | default #region név #endregion név
Leírás feltételes fordítás, feltételes fordítás, feltételes fordítás, feltételes fordítás, szimbólum definiálása, szimbólum definiáltságának megszüntetése, fordítási figyelmeztetés létrehozása, fordítási hiba előállítása, fordítói üzenetekben a sorszám (és a fájlnév) módosítása, kinyitható és bezárható forráskódrészlet kijelölése (eleje), kinyiható és bezárható forráskódrészlet kijelölése (vége).
7
F1. FÜGGELÉK
F1.8 Az object osztály metódusai Metódus
Leírás
public object()
konstruktor,
public virtual bool Equals(object obj)
megvizsgálja, hogy a megadott objektum azonos-e az aktuális objektummal,
public static bool Equals(object A, object B)
megvizsgálja, hogy a megadott objektumok azonosak-e,
protected virtual void Finalize()
a garbage collection (szemétgyűjtés) során, az objektumpéldány törlése előtt meghívódó metódus,
public Type GetType()
visszadja az objektum futásidejű osztályát,
public virtual int GetHashCode()
megadja az objektum hash-kódját,
protected object MemberwiseClone()
elkészíti az objektum sekély (shallow) másolatát, tagonként másolva annak elemeit,
public static bool megvizsgálja, hogy a megadott objektumpélReferenceEquals(object A, object B); dányok hivatkozása megegyezik-e, public virtual string ToString()
az objektum szöveges reprezentáiójával tér vissza,
F1.9 C# formázási lehetőségek Az alábbi formátumokat a Console osztály kiíró metódusaiban (Write(), WriteLine()), a String osztály Format() metódusában és az osztályok ToString() metódusaiban egyaránt alkalmazhatjuk, A formátumelem előtt, kettősponttal elválasztva a megjeleníteni kívánt argumentum sorszáma áll: int n = 122334; Console.WriteLine("{0:D} = {1:X}", n, n); Console.WriteLine(String.Format("{0:D} = {1:X}", n, n)); Console.WriteLine("{0} = {1}",n.ToString("D"), n.ToString("X")); // A kiírás eredménye mindhárom esetben: 122334 = 1DDDE
Fontos megjegyezni, hogy formázás eredménye függ a Windows területi beállításaitól (tizedes vessző, pénznem, dátum és idő stb.).
8
HASZNOS TÁBLÁZATOK
F1.9.1 Számok formázása Alapvető számformázási előírások: Előírás
Típus
Formátum
Példa (12.23D)
Példa (1223) 1 223,00 Ft
c, C
Pénzügyi
{0:c}
12,23 Ft
d, D
Decimális (egész szám)
{0:d}
FormatException
1223
e. E
Tudományos
{0:e}
1,223000e+001
1,223000e+003
f, F
Fixpontos
{0:f}
12,23
1223,00
g, G
Általános
{0:g}
12,23
1223
n, N
Szám ezres tagolóval
{0:n}
12,23
1 223,00
r, R
Kerekített
{0:r}
12,23
FormatException
p, P
Százalék
{0:p}
1 223,00 %
122 300,00 %
x, X
Hexadecimális
{0:x}
FormatException
4c7
{0:X}
FormatException
4C7
A formátumok többségében a pontosságot is megadhatjuk: Előírás
Típus
Formátum
Példa (12.23D)
Példa (1223)
c, C
Pénzügyi
{0:c7}
12,2300000 Ft
1 223,0000000 Ft
d, D
Decimális (egész szám)
{0:d7}
FormatException
0001223
e. E
Tudományos
{0:e7}
1,2230000e+001
1,2230000e+003
f, F
Fixpontos
{0:f7}
12,2300000
1223,0000000
g, G
Általános
{0:g7}
12,23
1223
n, N
Szám ezres tagolóval
{0:n7}
12,2300000
1 223,0000000
r, R
Visszaállítható
{0:r7}
12,23
FormatException
p, P
Százalék
{0:p7}
1 223,0000000 %
122 300,0000000 %
x, X
Hexadecimális
{0:x7}
FormatException
00004c7
{0:X7}
FormatException
00004C7
9
F1. FÜGGELÉK
A mezőszélesség-előírás csak akkor érvényesül, ha az eredmény elfér a mezőben. Negatív mezőszélesség megadásakor a szám a mező bal széléhez igazodik. Előírás
Típus
Formátum
Példa (12.23D)
Példa (1223)
c, C
Pénzügyi
{0,12:c7}
12,2300000 Ft
1 223,0000000 Ft
d, D
Decimális (egész szám)
{0,12:d7}
FormatException
e. E
Tudományos
{0,12:e7}
1,2230000e+001
f, F
Fixpontos
{0,12:f7}
12,2300000
1223,0000000
g, G
Általános
{0,12:g7}
12,23
1223
n, N
Szám ezres tagolóval
{0,12:n7}
12,2300000
r, R
Visszaállítható
{0,12:r7}
12,23
p, P
Százalék
{0,12:p7}
1 223,0000000 %
x, X
Hexadecimális
{0,12:x7}
FormatException
00004c7
{0,12:X7}
FormatException
00004C7
0001223 1,2230000e+003
1 223,0000000 FormatException 122 300,0000000 %
Kötetlen számformázás: Típus
Formátum
Példa (1223.79D)
Megjegyzés
0
0 vagy dec. jegy
{0:00.0000}
1223,7900
Feltölti nullákkal
#
Decimális jegy
{0:(#).##}
(1223),79
.
Tizedespont
{0:0.0}
1223,8
,
Ezres elválasztó
{0:0,0}
1 224
Két 0 között kell megadni.
,.
Számskálázás
{0:0,.}
1
Ezerrel osztva.. 100-zal szorozva és % jel.
Előírás
%
Százalék
{0:0%}
122379%
e
A kitevő helye
{0:00e+0}
12e+2
;
Csoportelválasztó
{0:#0.00;(#0.00);Nulla}
Az első csoport pozitív, a második negatív, míg a harmadik 0 esetén érvényesül.
Néhány példa: String.Format("{0:(##-#)-####-###}", 3613751564)
(36-1)-3751-564
String.Format("{0:#0.0##%}", 0.23)
23,0%
String.Format("{0:000.0###E+000}", 1223.7919)
122,3792E+001
10
HASZNOS TÁBLÁZATOK
F1.9.2 Dátum és idő formázása Alapvető formázási előírások: Előírás
Típus
Formátum
DateTime.Parse(@"23 Dec 2007 7:35:00"))
d
Rövid dátum
{0:d}
2007.12.23.
D
Hosszú dátum
{0:D}
2007. december 23.
t
Rövid idő
{0:t}
7:35
T
Hosszú idő
{0:T}
7:35:00
f
Teljes dátum és idő
{0:f}
2007. december 23. 7:35
F
Teljes dátum és idő (hosszú)
{0:F}
2007. december 23. 7:35:00
g
Alapértelmezett dátum és idő
{0:g}
2007.12.23. 7:35
G
Alapértelmezett dátum és idő (hosszú)
{0:G}
2007.12.23. 7:35:00
Hónap-nap
{0:M}
december 23.
RFC1123 dátumsztring
{0:r}
Sun, 23 Dec 2007 07:35:00 GMT
s
Rendezhető dátumsztring
{0:s}
2007-12-23T07:35:00
u
Univerzális rendezhető, helyi idő
{0:u}
2007-12-23 07:35:00Z
U
Univerzális GMT
{0:U}
2007. december 23. 6:35:00
Év-hó
{0:Y}
2007. december
M, m R, r
Y, y
Kötetlen formázás: Előírás
Típus
Formátum
Mint a fenti táblázatban
dd
nap
{0:dd}
23
ddd
napnév
{0:ddd}
V
dddd
teljes napnév
{0:dddd}
Vasárnap
gg, …
korszak
{0:gg}
i.sz.
hh
óra 2 jegyen
{0:hh}
07
HH
óra 2 jegyen, 24-órás formátum
{0:HH}
07
mm
perc 00-59
{0:mm}
35
MM
hónap 01-12
{0:MM}
12
MMM
hónap-rövidítés
{0:MMM}
dec.
MMMM
teljes hónapnév
{0:MMMM}
december
11
F1. FÜGGELÉK
Előírás
Típus
Formátum
Mint a fenti táblázatban
ss
másodperc 00-59
{0:ss}
00
tt
de vagy du
{0:tt}
de.
yy
év, 2 jegyen
{0:yy}
07
yyyy
év
{0:yyyy}
2007
zz
időzóna eltolás,2 jegyen
{0:zz}
+01
zzz
teljes időzóna eltolás,
{0:zzz}
+01:00
:
időtagoló
{0:hh:mm:ss}
07:35:00
/
dátumtagoló
{0:yyyy/MM/dd.}
2007.12.23.
F1.9.3 Felsorolások formázása Előírás
Típus
G, g
Alapértelmezés (az elemnév jelenik meg, ha elérhető, különben pedig az elem értéke)
F, f
Mindig az elemnév jelenik meg.
D, d
Mindig az egész értéke llátható.
X, x
8-jegyű hexadecimális szám formájában az elem értéke jelenik meg..
F1.10 .NET reguláris kifejezések alapelemei Művelettípus
Literál karakterek, melyekkel pontos egyezés szükséges.
Rögzítők és előfeltételezések.
12
Példa
Leírás
a A n 7 % @
Pontos egyezés betűkkel, számjegyekkel és sok egyéb larakterrel.
\$ \^ \+ \\ \? \|
Más karakterek előtt álló \ törli a karakter speciális regex jelentését.
\n \t \r
Új sor, tabulátor, kocsi vissza stb.literálok.
\cJ \cG
ASCII-vezérlőkarakterek.
\0123
Oktális kódjával megadott ASCII-karakter.
\x4F
Hexadecimális kódú ASCII-karakter.
\u04C7
Hexadecimális kódjával megadott unicodekarakter.
^kif
A „kif”-el kezdődik.
kif$
A „kif”-el végződik.
\b \B
Szóhatáron, NEM szóhatáron.
HASZNOS TÁBLÁZATOK
4
Művelettípus
Karaktercsoportok - bármely (1 darab) karakter a csoportból.
A megelőző elemre vonatkozó mennyiségjelző.
Alternatíva. Csoportosítás
Példa
Leírás
[aNeEiot]
A listában szereplő bármely karakter.
[^aNeEiot]
Bármely karakter, amely nem szerepel a listában.
[a-nA-N0-9]
A karaktertartományokban szereplő bármely karakter.
.
A pont helyén bármely karakter szereplehet (bizonyos esetekben nem lehet új sor).
\s
Bármely tagoló (whitespace) karakter (szóköz \n \r \t \f \v).
\w
Bármilyen szókarakter (betű, számjegy vagy _).
\d
Bármely számjegy (0-tól, 9-ig).
\S \W \D
Tetszőleges, NEM tagoló, szó- vagy számjegykarakter.
+
1 vagy több ("néhány").
*
0 vagy több ("talán néhány").
?
0 vagy 1 ("talán egy ")
{7}
Pontosan 7.
{7,}
7 vagy több.
{12,23}
12 és 23 közötti számú.
|
Valamelyik, vagy.
( )
Nem nevesített csoport.
(? )
Nevesített csoport.
(?: )
Nem tárolt csoport.
Az alábbi példában rendszámellenőrzést végzünk reguláris kifejezés felhasználásával: System.Text.RegularExpressions.Match m; string s = "NAT-123"; string r1 = @"[A-Z][A-Z][A-Z]-\d"; string r2 = @"[A-Z]{3}-\d"; m = System.Text.RegularExpressions.Regex.Match(s, r1); Console.WriteLine("{0}endszám: {1}", (m.Success) ? "R" : "Nem r", s); m = System.Text.RegularExpressions.Regex.Match(s, r2); Console.WriteLine("{0}endszám: {1}", (m.Success) ? "R" : "Nem r", s);
13