L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
1
1
C# and .NET Framework
C# and .NET Framework
B
B
à
à
i 3: L
i 3: L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao
nh nâng cao
trong
trong
C#
C#
Đo
Đo
à
à
n Quang Minh
n Quang Minh
http
http
://www.VTPortal.net
://www.VTPortal.net
Last update:
Last update:
21. Dec 2006
21. Dec 2006
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
2
2
M
M
ụ
ụ
c l
c l
ụ
ụ
c
c
Exceptions
Exceptions
User
User
-
-
Defined Casts
Defined Casts
Delegates
Delegates
Events
Events
Generics
Generics
Preprocessor Directive
Preprocessor Directive
Unsafe code
Unsafe code
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
3
3
Errors and Exception Handling
Errors and Exception Handling
L
L
ỗ
ỗ
i luôn luôn t
i luôn luôn t
ồ
ồ
n t
n t
ạ
ạ
i, cho d
i, cho d
ù
ù
h
h
ệ
ệ
th
th
ố
ố
ng đư
ng đư
ợ
ợ
c thi
c thi
ế
ế
t k
t k
ế
ế
t
t
ố
ố
t
t
th
th
ế
ế
n
n
à
à
o
o
–
–
L
L
ỗ
ỗ
i không đư
i không đư
ợ
ợ
c quy
c quy
ề
ề
n truy c
n truy c
ậ
ậ
p
p
–
–
L
L
ỗ
ỗ
i do thi
i do thi
ế
ế
t b
t b
ị
ị
h
h
ỏ
ỏ
ng
ng
(
(
đ
đ
í
í
a l
a l
ỗ
ỗ
i)
i)
–
–
L
L
ỗ
ỗ
i do đư
i do đư
ờ
ờ
ng truy
ng truy
ề
ề
n m
n m
ạ
ạ
ng h
ng h
ỏ
ỏ
ng
ng
Khi m
Khi m
ộ
ộ
t l
t l
ỗ
ỗ
i xu
i xu
ấ
ấ
t hi
t hi
ệ
ệ
n, .NET s
n, .NET s
ẽ
ẽ
n
n
é
é
m ra m
m ra m
ộ
ộ
t ngo
t ngo
ạ
ạ
i l
i l
ệ
ệ
–
–
C
C
á
á
c ngo
c ngo
ạ
ạ
i l
i l
ệ
ệ
đ
đ
ề
ề
u k
u k
ế
ế
th
th
ừ
ừ
a t
a t
ừ
ừ
l
l
ớ
ớ
p Exception
p Exception
–
–
T
T
ấ
ấ
t c
t c
ả
ả
c
c
á
á
c ngo
c ngo
ạ
ạ
i l
i l
ệ
ệ
cơ b
cơ b
ả
ả
n đ
n đ
ề
ề
u đư
u đư
ợ
ợ
c cung c
c cung c
ấ
ấ
p b
p b
ở
ở
i .NET
i .NET
–
–
N
N
ế
ế
u g
u g
ặ
ặ
p l
p l
ỗ
ỗ
i, ch
i, ch
ú
ú
ng ta nên n
ng ta nên n
é
é
m ra m
m ra m
ộ
ộ
t ngo
t ngo
ạ
ạ
i l
i l
ệ
ệ
đ
đ
ặ
ặ
c bi
c bi
ệ
ệ
t trong đ
t trong đ
ó
ó
c
c
ó
ó
mô t
mô t
ả
ả
thông tin rõ r
thông tin rõ r
à
à
ng v
ng v
ề
ề
ngo
ngo
ạ
ạ
i l
i l
ệ
ệ
đ
đ
ó
ó
–
–
N
N
ế
ế
u không t
u không t
ì
ì
m đư
m đư
ợ
ợ
c l
c l
ớ
ớ
p ngo
p ngo
ạ
ạ
i l
i l
ệ
ệ
ph
ph
ù
ù
h
h
ợ
ợ
p, c
p, c
ó
ó
th
th
ể
ể
xây d
xây d
ự
ự
ng l
ng l
ớ
ớ
p
p
ngo
ngo
ạ
ạ
i l
i l
ệ
ệ
c
c
ủ
ủ
a riêng m
a riêng m
ì
ì
nh
nh
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
4
4
Errors and Exception Handling
Errors and Exception Handling
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
5
5
Errors and Exception Handling
Errors and Exception Handling
try
try
{
{
…
…
}
}
catch (Exception e)
catch (Exception e)
{
{
…
…
}
}
finally
finally
{
{
…
…
}
}
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
6
6
Errors and Exception Handling
Errors and Exception Handling
Ph
Ph
ầ
ầ
n
n
try
try
th
th
ự
ự
c
c
thi
thi
c
c
á
á
c
c
l
l
ệ
ệ
nh
nh
b
b
ì
ì
nh
nh
thư
thư
ờ
ờ
ng
ng
Ph
Ph
ầ
ầ
n
n
catch
catch
x
x
ử
ử
lý
lý
c
c
á
á
c
c
ngo
ngo
ạ
ạ
i
i
l
l
ệ
ệ
c
c
ó
ó
th
th
ể
ể
xu
xu
ấ
ấ
t
t
hi
hi
ệ
ệ
n
n
–
–
N
N
ế
ế
u
u
không
không
s
s
ử
ử
d
d
ụ
ụ
ng
ng
ngo
ngo
ạ
ạ
i
i
l
l
ệ
ệ
n
n
é
é
m
m
ra
ra
,
,
c
c
ó
ó
th
th
ể
ể
b
b
ỏ
ỏ
qua
qua
ph
ph
ầ
ầ
n
n
đ
đ
ố
ố
i
i
tư
tư
ợ
ợ
ng
ng
đ
đ
ó
ó
.
.
–
–
C
C
ó
ó
th
th
ể
ể
c
c
ó
ó
nhi
nhi
ề
ề
u
u
ph
ph
ầ
ầ
n
n
catch
catch
trong
trong
m
m
ộ
ộ
t
t
kh
kh
ố
ố
i
i
try catch
try catch
,
,
khi
khi
đ
đ
ó
ó
m
m
ỗ
ỗ
i
i
ph
ph
ầ
ầ
n
n
catch
catch
x
x
ử
ử
lý
lý
m
m
ộ
ộ
t
t
ngo
ngo
ạ
ạ
i
i
l
l
ệ
ệ
kh
kh
á
á
c
c
nhau
nhau
.
.
–
–
Ngo
Ngo
ạ
ạ
i
i
l
l
ệ
ệ
c
c
ó
ó
th
th
ể
ể
đư
đư
ợ
ợ
c
c
n
n
é
é
m
m
l
l
ạ
ạ
i
i
b
b
ằ
ằ
ng
ng
t
t
ừ
ừ
kh
kh
ó
ó
a
a
throw
throw
.
.
Ph
Ph
ầ
ầ
n
n
finally
finally
th
th
ự
ự
c
c
thi
thi
c
c
á
á
c
c
l
l
ệ
ệ
nh
nh
k
k
ế
ế
t
t
th
th
ú
ú
c
c
c
c
ủ
ủ
a
a
kh
kh
ố
ố
i
i
l
l
ệ
ệ
nh
nh
.
.
V
V
í
í
d
d
ụ
ụ
trong
trong
vi
vi
ệ
ệ
c
c
x
x
ử
ử
lý
lý
t
t
ậ
ậ
p
p
tin
tin
–
–
Ph
Ph
ầ
ầ
n
n
try
try
th
th
ự
ự
c
c
thi
thi
c
c
á
á
c
c
l
l
ệ
ệ
nh
nh
như
như
m
m
ở
ở
file,
file,
đ
đ
ọ
ọ
c
c
ghi
ghi
b
b
ì
ì
nh
nh
thư
thư
ờ
ờ
ng
ng
–
–
Ph
Ph
ầ
ầ
n
n
catch
catch
x
x
ử
ử
lý
lý
l
l
ỗ
ỗ
i
i
.
.
–
–
Ph
Ph
ầ
ầ
n
n
finally
finally
,
,
n
n
ế
ế
u
u
file
file
đư
đư
ợ
ợ
c
c
m
m
ở
ở
th
th
ì
ì
ph
ph
ả
ả
i
i
đ
đ
ó
ó
ng
ng
l
l
ạ
ạ
i
i
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
7
7
User
User
-
-
Defined Casts
Defined Casts
To
To
á
á
n
n
t
t
ử
ử
é
é
p
p
ki
ki
ể
ể
u
u
as
as
Ch
Ch
ú
ú
ng
ng
ta
ta
thư
thư
ờ
ờ
ng
ng
xuyên
xuyên
ph
ph
ả
ả
i
i
é
é
p
p
ki
ki
ể
ể
u
u
trong
trong
C#
C#
–
–
C
C
ó
ó
2
2
lo
lo
ạ
ạ
i
i
é
é
p
p
ki
ki
ể
ể
u
u
trong
trong
C#: implicit (an
C#: implicit (an
to
to
à
à
n
n
tuy
tuy
ệ
ệ
t
t
đ
đ
ố
ố
i
i
),
),
explicit(c
explicit(c
ó
ó
r
r
ủ
ủ
i
i
ro
ro
)
)
–
–
C
C
ó
ó
th
th
ể
ể
é
é
p
p
ki
ki
ể
ể
u
u
t
t
ừ
ừ
l
l
ớ
ớ
p
p
k
k
ế
ế
th
th
ừ
ừ
a
a
v
v
ề
ề
l
l
ớ
ớ
p
p
cơ
cơ
s
s
ở
ở
, song
, song
không
không
th
th
ể
ể
l
l
à
à
m
m
ngư
ngư
ợ
ợ
c
c
l
l
ạ
ạ
i
i
–
–
C
C
ó
ó
th
th
ể
ể
é
é
p
p
ki
ki
ể
ể
u
u
qua
qua
l
l
ạ
ạ
i
i
gi
gi
ữ
ữ
a
a
2
2
l
l
ớ
ớ
p
p
,
,
khi
khi
đ
đ
ó
ó
c
c
ầ
ầ
n
n
khai
khai
b
b
á
á
o
o
h
h
à
à
m
m
é
é
p
p
ki
ki
ể
ể
u
u
public static implicit operator
public static implicit operator
conv
conv
-
-
type
type
-
-
out
out
(
(
conv
conv
-
-
type
type
-
-
in
in
operand
operand
)
)
public static explicit operator
public static explicit operator
conv
conv
-
-
type
type
-
-
out
out
(
(
conv
conv
-
-
type
type
-
-
in
in
operand
operand
)
)
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
8
8
Delegates
Delegates
delegate
delegate
–
–
C
C
ó
ó
nh
nh
ữ
ữ
ng
ng
công
công
vi
vi
ệ
ệ
c
c
không
không
x
x
á
á
c
c
đ
đ
ị
ị
nh
nh
l
l
ú
ú
c
c
biên
biên
d
d
ị
ị
ch
ch
,
,
ch
ch
ỉ
ỉ
x
x
á
á
c
c
đ
đ
ị
ị
nh
nh
l
l
ú
ú
c
c
th
th
ự
ự
c
c
thi
thi
.
.
–
–
C
C
á
á
c
c
thu
thu
ậ
ậ
t
t
to
to
á
á
n
n
t
t
ổ
ổ
ng
ng
qu
qu
á
á
t
t
,
,
v
v
í
í
d
d
ụ
ụ
s
s
ắ
ắ
p
p
x
x
ế
ế
p
p
:
:
không
không
th
th
ể
ể
đ
đ
ị
ị
nh
nh
ngh
ngh
ĩ
ĩ
a
a
phương
phương
th
th
ứ
ứ
c
c
so
so
s
s
á
á
nh
nh
2
2
đ
đ
ố
ố
i
i
tư
tư
ợ
ợ
ng
ng
b
b
ấ
ấ
t
t
k
k
ỳ
ỳ
–
–
delegate
delegate
l
l
à
à
ki
ki
ể
ể
u
u
tham
tham
chi
chi
ế
ế
u
u
,
,
gi
gi
ố
ố
ng
ng
như
như
class (
class (
trong
trong
C#),
C#),
v
v
ề
ề
ý
ý
ngh
ngh
ĩ
ĩ
a
a
gi
gi
ố
ố
ng
ng
con
con
tr
tr
ỏ
ỏ
h
h
à
à
m
m
trong
trong
C++
C++
[
[
attributes
attributes
] [
] [
modifiers
modifiers
]
]
delegate
delegate
result
result
-
-
type
type
identifier
identifier
(
(
[
[
formal
formal
-
-
parameters
parameters
]
]
);
);
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
9
9
Delegates
Delegates
delegate void
delegate void
MyDelegate(int
MyDelegate(int
i);
i);
class Program
class Program
{
{
public static void Main()
public static void Main()
{
{
TakesADelegate(new
TakesADelegate(new
MyDelegate(DelegateFunction
MyDelegate(DelegateFunction
));
));
}
}
public static void
public static void
TakesADelegate(MyDelegate
TakesADelegate(MyDelegate
SomeFunction
SomeFunction
)
)
{
{
SomeFunction(21);
SomeFunction(21);
}
}
public static void
public static void
DelegateFunction(int
DelegateFunction(int
i)
i)
{
{
System.Console.WriteLine("Called
System.Console.WriteLine("Called
by delegate with number: {0}.", i);
by delegate with number: {0}.", i);
}
}
}
}
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
10
10
Events
Events
S
S
ự
ự
ki
ki
ệ
ệ
n
n
–
–
Đư
Đư
ợ
ợ
c
c
s
s
ử
ử
d
d
ụ
ụ
ng
ng
đ
đ
ể
ể
b
b
á
á
o
o
hi
hi
ệ
ệ
u
u
m
m
ộ
ộ
t
t
đi
đi
ề
ề
u
u
g
g
ì
ì
đ
đ
ó
ó
x
x
ả
ả
y
y
ra
ra
.
.
–
–
Trong
Trong
Windows,
Windows,
c
c
ó
ó
r
r
ấ
ấ
t
t
nhi
nhi
ề
ề
u
u
s
s
ự
ự
ki
ki
ệ
ệ
n
n
.
.
–
–
Trong
Trong
C#, event
C#, event
l
l
à
à
m
m
ộ
ộ
t
t
d
d
ạ
ạ
ng
ng
đ
đ
ặ
ặ
c
c
bi
bi
ệ
ệ
t
t
c
c
ủ
ủ
a
a
delegate
delegate
[
[
attributes
attributes
] [
] [
modifiers
modifiers
]
]
event
event
type
type
declarator
declarator
;
;
[
[
attributes
attributes
] [
] [
modifiers
modifiers
]
]
event
event
type
type
member
member
-
-
name
name
{
{
accessor
accessor
-
-
declarations
declarations
};
};
Ph
Ph
á
á
t
t
sinh
sinh
s
s
ự
ự
ki
ki
ệ
ệ
n
n
–
–
Đ
Đ
ị
ị
nh
nh
ngh
ngh
ĩ
ĩ
a
a
tham
tham
s
s
ố
ố
s
s
ự
ự
ki
ki
ệ
ệ
n
n
,
,
đ
đ
ặ
ặ
t
t
tên
tên
l
l
à
à
EventName
EventName
EventArgs
EventArgs
,
,
k
k
ế
ế
th
th
ừ
ừ
a
a
t
t
ừ
ừ
System.EventArgs
System.EventArgs
.
.
–
–
Đ
Đ
ị
ị
nh
nh
ngh
ngh
ĩ
ĩ
a
a
m
m
ộ
ộ
t
t
delegates
delegates
cho
cho
s
s
ự
ự
ki
ki
ệ
ệ
n
n
,
,
đ
đ
ặ
ặ
t
t
tên
tên
l
l
à
à
EventName
EventName
EventHandler
EventHandler
.
.
–
–
Ph
Ph
á
á
t
t
sinh
sinh
s
s
ự
ự
ki
ki
ệ
ệ
n
n
Khai
Khai
b
b
á
á
o
o
s
s
ự
ự
ki
ki
ệ
ệ
n
n
Khai
Khai
b
b
á
á
o
o
m
m
ộ
ộ
t
t
phương
phương
th
th
ứ
ứ
c
c
On
On
EventName
EventName
đ
đ
ể
ể
ph
ph
á
á
t
t
sinh
sinh
s
s
ự
ự
ki
ki
ệ
ệ
n
n
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
11
11
Events
Events
X
X
ử
ử
lý
lý
s
s
ự
ự
ki
ki
ệ
ệ
n
n
–
–
N
N
ế
ế
u
u
m
m
ộ
ộ
t
t
component
component
ph
ph
á
á
t
t
sinh
sinh
m
m
ộ
ộ
t
t
s
s
ự
ự
ki
ki
ệ
ệ
n
n
,
,
c
c
ó
ó
th
th
ể
ể
b
b
ắ
ắ
t
t
v
v
à
à
x
x
ử
ử
lý
lý
s
s
ự
ự
ki
ki
ệ
ệ
n
n
đ
đ
ó
ó
.
.
–
–
Đ
Đ
ể
ể
hander
hander
s
s
ự
ự
ki
ki
ệ
ệ
n
n
trong
trong
Windows Form
Windows Form
ho
ho
ặ
ặ
c
c
trong
trong
Web Form:
Web Form:
Khai
Khai
b
b
á
á
o
o
component (
component (
v
v
í
í
d
d
ụ
ụ
button)
button)
Khai
Khai
b
b
á
á
o
o
h
h
à
à
m
m
x
x
ử
ử
lý
lý
s
s
ự
ự
ki
ki
ệ
ệ
n
n
G
G
ắ
ắ
n
n
h
h
à
à
m
m
v
v
à
à
o
o
s
s
ự
ự
ki
ki
ệ
ệ
n
n
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
12
12
Generics
Generics
Generics
Generics
–
–
Cho
Cho
ph
ph
é
é
p
p
class,
class,
struct
struct
, interface, method
, interface, method
s
s
ử
ử
d
d
ụ
ụ
ng
ng
ki
ki
ể
ể
u
u
d
d
ữ
ữ
li
li
ệ
ệ
u
u
m
m
à
à
n
n
ó
ó
lưu
lưu
tr
tr
ữ
ữ
như
như
l
l
à
à
tham
tham
s
s
ố
ố
đ
đ
ầ
ầ
u
u
v
v
à
à
o
o
.
.
–
–
Kh
Kh
á
á
i
i
ni
ni
ệ
ệ
m
m
gi
gi
ố
ố
ng
ng
như
như
template
template
c
c
ủ
ủ
a
a
C++.
C++.
–
–
Generics
Generics
xu
xu
ấ
ấ
t
t
hi
hi
ệ
ệ
n
n
nh
nh
ằ
ằ
m
m
m
m
ụ
ụ
c
c
đ
đ
í
í
ch
ch
x
x
ử
ử
l
l
í
í
ch
ch
í
í
nh
nh
x
x
á
á
c
c
ki
ki
ể
ể
u
u
c
c
ủ
ủ
a
a
d
d
ữ
ữ
li
li
ệ
ệ
u
u
.
.
V
V
í
í
d
d
ụ
ụ
,
,
v
v
ớ
ớ
i
i
stack,
stack,
n
n
ế
ế
u
u
không
không
c
c
ó
ó
generics
generics
th
th
ì
ì
d
d
ữ
ữ
li
li
ệ
ệ
u
u
coi
coi
như
như
c
c
á
á
c
c
object,
object,
nên
nên
đòi
đòi
h
h
ỏ
ỏ
i
i
ph
ph
ả
ả
i
i
é
é
p
p
ki
ki
ể
ể
u
u
khi
khi
x
x
ử
ử
l
l
í
í
,
,
đi
đi
ề
ề
u
u
n
n
à
à
y
y
c
c
ó
ó
th
th
ể
ể
gây
gây
l
l
ỗ
ỗ
i
i
run
run
-
-
time.
time.
T
T
ạ
ạ
o
o
v
v
à
à
s
s
ử
ử
d
d
ụ
ụ
ng
ng
Generics
Generics
–
–
Khai
Khai
b
b
á
á
o
o
gi
gi
ố
ố
ng
ng
như
như
template
template
trong
trong
C++:
C++:
d
d
ù
ù
ng
ng
c
c
ặ
ặ
p
p
d
d
ấ
ấ
u
u
< >
< >
–
–
S
S
ử
ử
d
d
ụ
ụ
ng
ng
:
:
ph
ph
ả
ả
i
i
ch
ch
ỉ
ỉ
đ
đ
ị
ị
nh
nh
ch
ch
í
í
nh
nh
x
x
á
á
c
c
ki
ki
ể
ể
u
u
d
d
ữ
ữ
li
li
ệ
ệ
u
u
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
13
13
Generics
Generics
V
V
í
í
d
d
ụ
ụ
s
s
ử
ử
d
d
ụ
ụ
ng
ng
Generics
Generics
–
–
Khai
Khai
b
b
á
á
o
o
:
:
public class Stack<ItemType>
{
private ItemType[] items = new ItemType[100];
public void Push(ItemType data) {…}
public ItemType Pop() {…}
}
–Sử dụng
Stack<int> s = new Stack<int>();
s.Push(3);
int x = s.Pop();
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
14
14
Preprocessor Directives
Preprocessor Directives
#define and #
#define and #
undef
undef
#if, #
#if, #
elif
elif
, #else, and #
, #else, and #
endif
endif
#warning and #error
#warning and #error
#region and #
#region and #
endregion
endregion
#line
#line
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
15
15
Memory Management
Memory Management
C#
C#
t
t
ự
ự
đ
đ
ộ
ộ
ng
ng
qu
qu
ả
ả
n
n
lý
lý
b
b
ộ
ộ
nh
nh
ớ
ớ
nh
nh
ờ
ờ
v
v
à
à
o
o
b
b
ộ
ộ
thu
thu
gom
gom
r
r
á
á
c
c
–
–
B
B
ộ
ộ
nh
nh
ớ
ớ
ả
ả
o
o
trong
trong
Windows
Windows
–
–
Stack
Stack
v
v
à
à
heap
heap
C
C
ó
ó
2
2
lo
lo
ạ
ạ
i
i
ki
ki
ể
ể
u
u
d
d
ữ
ữ
li
li
ệ
ệ
u
u
trong
trong
C#
C#
–
–
Value Data Types:
Value Data Types:
D
D
ữ
ữ
li
li
ệ
ệ
u
u
ch
ch
ứ
ứ
a
a
t
t
ạ
ạ
i
i
nơi
nơi
n
n
ó
ó
đư
đư
ợ
ợ
c
c
c
c
ấ
ấ
p
p
ph
ph
á
á
t
t
v
v
ù
ù
ng
ng
nh
nh
ớ
ớ
C
C
á
á
c
c
ki
ki
ể
ể
u
u
s
s
ố
ố
,
,
bool
bool
, char, date,
, char, date,
c
c
á
á
c
c
c
c
ấ
ấ
u
u
tr
tr
ú
ú
c
c
,
,
c
c
á
á
c
c
ki
ki
ể
ể
u
u
li
li
ệ
ệ
t
t
kê
kê
–
–
Reference Data Types:
Reference Data Types:
Ch
Ch
ứ
ứ
a
a
m
m
ộ
ộ
t
t
con
con
tr
tr
ỏ
ỏ
tr
tr
ỏ
ỏ
t
t
ớ
ớ
i
i
nơi
nơi
c
c
ấ
ấ
t
t
gi
gi
ữ
ữ
d
d
ữ
ữ
li
li
ệ
ệ
u
u
Bao
Bao
g
g
ồ
ồ
m
m
ki
ki
ể
ể
u
u
string,
string,
m
m
ả
ả
ng
ng
, class, delegate
, class, delegate
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
16
16
Unsafe Code
Unsafe Code
C#
C#
t
t
ự
ự
qu
qu
ả
ả
n
n
lý
lý
b
b
ộ
ộ
nh
nh
ớ
ớ
,
,
tuy
tuy
nhiên
nhiên
c
c
ó
ó
nh
nh
ữ
ữ
ng
ng
l
l
ú
ú
c
c
ch
ch
ú
ú
ng
ng
ta
ta
c
c
ầ
ầ
n
n
s
s
ử
ử
d
d
ụ
ụ
ng
ng
con
con
tr
tr
ỏ
ỏ
.
.
–
–
D
D
ù
ù
ng
ng
t
t
ừ
ừ
kh
kh
ó
ó
a
a
unsafe
unsafe
t
t
ạ
ạ
i
i
v
v
ù
ù
ng
ng
l
l
ệ
ệ
nh
nh
mu
mu
ố
ố
n
n
s
s
ử
ử
d
d
ụ
ụ
ng
ng
con
con
tr
tr
ỏ
ỏ
–
–
Ph
Ph
ả
ả
i
i
c
c
ó
ó
tham
tham
s
s
ố
ố
biên
biên
d
d
ị
ị
ch
ch
unsafe
unsafe
khi
khi
d
d
ị
ị
ch
ch
chương
chương
tr
tr
ì
ì
nh
nh
Con
Con
tr
tr
ỏ
ỏ
:
:
–
–
C
C
á
á
c
c
khai
khai
b
b
á
á
o
o
v
v
à
à
s
s
ử
ử
d
d
ụ
ụ
ng
ng
tương
tương
t
t
ự
ự
C++
C++
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
17
17
T
T
à
à
i li
i li
ệ
ệ
u tham kh
u tham kh
ả
ả
o
o
Professional C#, Second Edition
Professional C#, Second Edition
/> />
Đ
Đ
ị
ị
a ch
a ch
ỉ
ỉ
download t
download t
à
à
i li
i li
ệ
ệ
u
u
/> />-
-
day/tab.aspx
day/tab.aspx
Di
Di
ễ
ễ
n đ
n đ
à
à
n C# & .NET
n C# & .NET
/> />ory/hoc
ory/hoc
-
-
tap
tap
-
-
nghien
nghien
-
-
cuu/dot
cuu/dot
-
-
net/tab.aspx
net/tab.aspx
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
1
1
C# and .NET Framework
C# and .NET Framework
B
B
à
à
i 4:
i 4:
.NET
.NET
v
v
à
à
c
c
á
á
c
c
l
l
ớ
ớ
p
p
cơ
cơ
b
b
ả
ả
n
n
Đo
Đo
à
à
n Quang Minh
n Quang Minh
http
http
://www.VTPortal.net
://www.VTPortal.net
Last update:
Last update:
28. December 2006
28. December 2006
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
2
2
M
M
ụ
ụ
c l
c l
ụ
ụ
c
c
System.Object
System.Object
X
X
ử
ử
lý
lý
String
String
Regular Expression
Regular Expression
Groups of Objects
Groups of Objects
Reflection
Reflection
Threading
Threading
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
3
3
System.Object
System.Object
L
L
à
à
l
l
ớ
ớ
p cơ b
p cơ b
ả
ả
n c
n c
ủ
ủ
a C#
a C#
–
–
N
N
ế
ế
u không n
u không n
ó
ó
i g
i g
ì
ì
, m
, m
ộ
ộ
t l
t l
ớ
ớ
p b
p b
ấ
ấ
t k
t k
ỳ
ỳ
coi như đư
coi như đư
ợ
ợ
c k
c k
ế
ế
th
th
ừ
ừ
a t
a t
ừ
ừ
Object
Object
C
C
á
á
c phương th
c phương th
ứ
ứ
c
c
–
–
public
public
virutal
virutal
string
string
ToString
ToString
()
()
override phương th
override phương th
ứ
ứ
c n
c n
à
à
y đ
y đ
ể
ể
chuy
chuy
ể
ể
n m
n m
ộ
ộ
t đ
t đ
ố
ố
i tư
i tư
ợ
ợ
ng th
ng th
à
à
nh xâu ký
nh xâu ký
t
t
ự
ự
.
.
Thư
Thư
ờ
ờ
ng d
ng d
ù
ù
ng khi k
ng khi k
ế
ế
t xu
t xu
ấ
ấ
t thông tin v
t thông tin v
ề
ề
đ
đ
ố
ố
i tư
i tư
ợ
ợ
ng.
ng.
–
–
public
public
virutal
virutal
int
int
GetHashTable
GetHashTable
()
()
Tr
Tr
ả
ả
v
v
ề
ề
m
m
ộ
ộ
t gi
t gi
á
á
tr
tr
ị
ị
băm c
băm c
ủ
ủ
a đ
a đ
ố
ố
i tư
i tư
ợ
ợ
ng
ng
Thư
Thư
ờ
ờ
ng d
ng d
ù
ù
ng khi t
ng khi t
ạ
ạ
o kho
o kho
á
á
truy xu
truy xu
ấ
ấ
t cho đ
t cho đ
ố
ố
i tư
i tư
ợ
ợ
ng trong m
ng trong m
ộ
ộ
t t
t t
ậ
ậ
p d
p d
ữ
ữ
li
li
ệ
ệ
u như b
u như b
ả
ả
ng băm ho
ng băm ho
ặ
ặ
c t
c t
ừ
ừ
đi
đi
ể
ể
n.
n.
–
–
public
public
virutal
virutal
bool
bool
Equals(object
Equals(object
obj
obj
)
)
–
–
public static
public static
bool
bool
Equals(object
Equals(object
objA
objA
, object
, object
objB
objB
)
)
–
–
public static
public static
bool
bool
ReferenceEquals(object
ReferenceEquals(object
objA
objA
, object
, object
objB
objB
)
)
So s
So s
á
á
nh hai đ
nh hai đ
ố
ố
i tư
i tư
ợ
ợ
ng
ng
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
4
4
System.Object
System.Object
C
C
á
á
c
c
phương
phương
th
th
ứ
ứ
c
c
(
(
ti
ti
ế
ế
p
p
)
)
–
–
protected virtual void Finalize()
protected virtual void Finalize()
Mang
Mang
ý
ý
ngh
ngh
ĩ
ĩ
a
a
l
l
à
à
h
h
à
à
m
m
hu
hu
ỷ
ỷ
,
,
đư
đư
ợ
ợ
c
c
g
g
ọ
ọ
i
i
b
b
ở
ở
i
i
b
b
ộ
ộ
thu
thu
gom
gom
r
r
á
á
c
c
.
.
M
M
ặ
ặ
c
c
đ
đ
ị
ị
nh
nh
không
không
th
th
ự
ự
c
c
thi
thi
g
g
ì
ì
.
.
Ch
Ch
ỉ
ỉ
override
override
khi
khi
c
c
ầ
ầ
n
n
thi
thi
ế
ế
t
t
,
,
v
v
í
í
d
d
ụ
ụ
đ
đ
ó
ó
ng
ng
t
t
ậ
ậ
p
p
tin.
tin.
–
–
public Type
public Type
GetType
GetType
()
()
Tr
Tr
ả
ả
v
v
ề
ề
ki
ki
ể
ể
u
u
đ
đ
ố
ố
i
i
tư
tư
ợ
ợ
ng
ng
,
,
bao
bao
g
g
ồ
ồ
m
m
l
l
ớ
ớ
p
p
cha,
cha,
c
c
á
á
c
c
phương
phương
th
th
ứ
ứ
c
c
,
,
thu
thu
ộ
ộ
c
c
t
t
í
í
nh
nh
,
,
…
…
–
–
protected object
protected object
MemberwiseClone
MemberwiseClone
()
()
Copy
Copy
m
m
ộ
ộ
t
t
đ
đ
ố
ố
i
i
tư
tư
ợ
ợ
ng
ng
.
.
Ch
Ch
ú
ú
ý
ý
ch
ch
ỉ
ỉ
copy
copy
c
c
á
á
c
c
tham
tham
chi
chi
ế
ế
u
u
bên
bên
trong
trong
đ
đ
ố
ố
i
i
tư
tư
ợ
ợ
ng
ng
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
5
5
X
X
ử
ử
lý
lý
String
String
C
C
ó
ó
2
2
l
l
ớ
ớ
p
p
hay
hay
đư
đư
ợ
ợ
c
c
d
d
ù
ù
ng
ng
đ
đ
ể
ể
x
x
ử
ử
lý
lý
xâu
xâu
–
–
String:
String:
x
x
ử
ử
lý
lý
c
c
á
á
c
c
xâu
xâu
ký
ký
t
t
ự
ự
–
–
StringBuilder
StringBuilder
:
:
xây
xây
d
d
ự
ự
ng
ng
m
m
ộ
ộ
t
t
xâu
xâu
ký
ký
t
t
ự
ự
String:
String:
ch
ch
ứ
ứ
a
a
c
c
á
á
c
c
phương
phương
th
th
ứ
ứ
c
c
cơ
cơ
b
b
ả
ả
n
n
trong
trong
vi
vi
ệ
ệ
c
c
x
x
ử
ử
lý
lý
xâu
xâu
ký
ký
t
t
ự
ự
.
.
–
–
Compare(): so
Compare(): so
s
s
á
á
nh
nh
hai
hai
xâu
xâu
.
.
–
–
CompareOrdinal
CompareOrdinal
(): so
(): so
s
s
á
á
nh
nh
,
,
nhưng
nhưng
không
không
t
t
í
í
nh
nh
đ
đ
ế
ế
n
n
văn
văn
ho
ho
á
á
(culture)
(culture)
–
–
Format():
Format():
đ
đ
ị
ị
nh
nh
d
d
ạ
ạ
ng
ng
xâu
xâu
d
d
ự
ự
a
a
trên
trên
bi
bi
ể
ể
u
u
th
th
ứ
ứ
c
c
đ
đ
ị
ị
nh
nh
d
d
ạ
ạ
ng
ng
v
v
à
à
c
c
á
á
c
c
tham
tham
s
s
ố
ố
đ
đ
ầ
ầ
u
u
v
v
à
à
o
o
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
6
6
X
X
ử
ử
lý
lý
String
String
C
C
á
á
c
c
phương
phương
th
th
ứ
ứ
c
c
c
c
ủ
ủ
a
a
String (
String (
ti
ti
ế
ế
p
p
)
)
–
–
IndexOf
IndexOf
(),
(),
IndexOfAny
IndexOfAny
(),
(),
LastIndexOf
LastIndexOf
(),
(),
LastIndexOfAny
LastIndexOfAny
():
():
t
t
ì
ì
m
m
ki
ki
ế
ế
m
m
chu
chu
ỗ
ỗ
i
i
ký
ký
t
t
ự
ự
,
,
ho
ho
ặ
ặ
c
c
m
m
ộ
ộ
t
t
ph
ph
ầ
ầ
n
n
chu
chu
ỗ
ỗ
i
i
ký
ký
t
t
ự
ự
trong
trong
m
m
ộ
ộ
t
t
xâu
xâu
cho
cho
trư
trư
ớ
ớ
c
c
.
.
–
–
PadLeft
PadLeft
(),
(),
PadRight
PadRight
():
():
đi
đi
ề
ề
n
n
thêm
thêm
v
v
à
à
o
o
đ
đ
ầ
ầ
u
u
ho
ho
ặ
ặ
c
c
cu
cu
ố
ố
i
i
xâu
xâu
b
b
ở
ở
i
i
ký
ký
t
t
ự
ự
cho
cho
trư
trư
ớ
ớ
c
c
.
.
–
–
Replace():
Replace():
thay
thay
th
th
ế
ế
m
m
ộ
ộ
t
t
m
m
ẫ
ẫ
u
u
trong
trong
xâu
xâu
b
b
ở
ở
i
i
m
m
ộ
ộ
t
t
chu
chu
ỗ
ỗ
i
i
ký
ký
t
t
ự
ự
kh
kh
á
á
c
c
.
.
–
–
Split():
Split():
c
c
ắ
ắ
t
t
m
m
ộ
ộ
t
t
xâu
xâu
th
th
à
à
nh
nh
m
m
ộ
ộ
t
t
t
t
ậ
ậ
p
p
h
h
ợ
ợ
p
p
c
c
á
á
c
c
xâu
xâu
con
con
d
d
ự
ự
a
a
theo
theo
m
m
ộ
ộ
t
t
ký
ký
t
t
ự
ự
phân
phân
c
c
á
á
ch
ch
cho
cho
trư
trư
ớ
ớ
c
c
.
.
–
–
Substring():
Substring():
l
l
ấ
ấ
y
y
m
m
ộ
ộ
t
t
ph
ph
ầ
ầ
n
n
xâu
xâu
con
con
t
t
ừ
ừ
m
m
ộ
ộ
t
t
xâu
xâu
cho
cho
trư
trư
ớ
ớ
c
c
.
.
–
–
ToLower
ToLower
(),
(),
ToUpper
ToUpper
():
():
bi
bi
ế
ế
n
n
c
c
á
á
c
c
ký
ký
t
t
ự
ự
trong
trong
xâu
xâu
th
th
à
à
nh
nh
ký
ký
t
t
ự
ự
thư
thư
ờ
ờ
ng
ng
ho
ho
ặ
ặ
c
c
ký
ký
t
t
ự
ự
hoa
hoa
.
.
–
–
Trim(),
Trim(),
TrimEnd
TrimEnd
(),
(),
TrimStart
TrimStart
():
():
xo
xo
á
á
c
c
á
á
c
c
ký
ký
t
t
ự
ự
tr
tr
ắ
ắ
ng
ng
ở
ở
đ
đ
ầ
ầ
u
u
,
,
cu
cu
ố
ố
i
i
xâu
xâu
.
.
–
–
Insert(), Remove():
Insert(), Remove():
ch
ch
è
è
n
n
v
v
à
à
o
o
,
,
xo
xo
á
á
đi
đi
m
m
ộ
ộ
t
t
xâu
xâu
con
con
trong
trong
m
m
ộ
ộ
t
t
xâu
xâu
cho
cho
trư
trư
ớ
ớ
c
c
.
.
–
–
StartsWith
StartsWith
(),
(),
EndsWith
EndsWith
():
():
ki
ki
ể
ể
m
m
tra
tra
xem
xem
xâu
xâu
c
c
ó
ó
b
b
ắ
ắ
t
t
đ
đ
ầ
ầ
u
u
,
,
k
k
ế
ế
t
t
th
th
ú
ú
c
c
b
b
ở
ở
i
i
m
m
ộ
ộ
t
t
xâu
xâu
kh
kh
á
á
c
c
.
.
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
7
7
X
X
ử
ử
lý
lý
String
String
Đ
Đ
ể
ể
x
x
ử
ử
lý
lý
xâu
xâu
,
,
ch
ch
ú
ú
ng
ng
ta
ta
hay
hay
d
d
ù
ù
ng
ng
c
c
á
á
c
c
ph
ph
é
é
p
p
to
to
á
á
n
n
như
như
so
so
s
s
á
á
nh
nh
,
,
g
g
á
á
n
n
,
,
c
c
ộ
ộ
ng
ng
thêm
thêm
(+=)
(+=)
–
–
Ưu
Ưu
đi
đi
ể
ể
m
m
:
:
C
C
á
á
c
c
ph
ph
é
é
p
p
to
to
á
á
n
n
đơn
đơn
gi
gi
ả
ả
n
n
,
,
d
d
ễ
ễ
d
d
ù
ù
ng
ng
–
–
Như
Như
ợ
ợ
c
c
đi
đi
ể
ể
m
m
:
:
Hi
Hi
ệ
ệ
u
u
su
su
ấ
ấ
t
t
qu
qu
ả
ả
n
n
lý
lý
b
b
ộ
ộ
nh
nh
ớ
ớ
th
th
ấ
ấ
p
p
Khi
Khi
c
c
ầ
ầ
n
n
xây
xây
d
d
ự
ự
ng
ng
m
m
ộ
ộ
t
t
chu
chu
ỗ
ỗ
i
i
văn
văn
b
b
ả
ả
n
n
ph
ph
ứ
ứ
c
c
t
t
ạ
ạ
p
p
v
v
à
à
c
c
ó
ó
đ
đ
ộ
ộ
d
d
à
à
i
i
tương
tương
đ
đ
ố
ố
i
i
l
l
ớ
ớ
n
n
,
,
ch
ch
ú
ú
ng
ng
ta
ta
d
d
ù
ù
ng
ng
l
l
ớ
ớ
p
p
StringBuilder
StringBuilder
–
–
StringBuilder
StringBuilder
cho
cho
ph
ph
é
é
p
p
n
n
ố
ố
i
i
thêm
thêm
c
c
á
á
c
c
xâu
xâu
m
m
ớ
ớ
i
i
v
v
à
à
o
o
trong
trong
m
m
ộ
ộ
t
t
t
t
ậ
ậ
p
p
h
h
ợ
ợ
p
p
c
c
á
á
c
c
xâu
xâu
c
c
ó
ó
s
s
ẵ
ẵ
n
n
m
m
à
à
không
không
c
c
ầ
ầ
n
n
qu
qu
á
á
nhi
nhi
ề
ề
u
u
c
c
á
á
c
c
thao
thao
t
t
á
á
c
c
x
x
ử
ử
lý
lý
v
v
ù
ù
ng
ng
nh
nh
ớ
ớ
–
–
V
V
í
í
d
d
ụ
ụ
:
:
L
L
ậ
ậ
p tr
p tr
ì
ì
nh nâng cao trong C#
nh nâng cao trong C#
-
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
8
8
X
X
ử
ử
lý
lý
String
String
StringBuilder
StringBuilder
–
–
Append():
Append():
n
n
ố
ố
i
i
thêm
thêm
v
v
à
à
o
o
đuôi
đuôi
m
m
ộ
ộ
t
t
xâu
xâu
m
m
ớ
ớ
i
i
–
–
Insert():
Insert():
ch
ch
è
è
n
n
v
v
à
à
o
o
m
m
ộ
ộ
t
t
v
v
ị
ị
tr
tr
í
í
b
b
ấ
ấ
t
t
k
k
ỳ
ỳ
m
m
ộ
ộ
t
t
xâu
xâu
m
m
ớ
ớ
i
i
.
.
–
–
Remove():
Remove():
xo
xo
á
á
b
b
ỏ
ỏ
m
m
ộ
ộ
t
t
xâu
xâu
con
con
t
t
ạ
ạ
i
i
v
v
ị
ị
tr
tr
í
í
hi
hi
ệ
ệ
n
n
th
th
ờ
ờ
i
i
–
–
ToString
ToString
():
():
sau
sau
khi
khi
xây
xây
d
d
ự
ự
ng
ng
t
t
ậ
ậ
p
p
c
c
á
á
c
c
xâu
xâu
xong
xong
,
,
phương
phương
th
th
ứ
ứ
c
c
n
n
à
à
y
y
bi
bi
ế
ế
n
n
đ
đ
ổ
ổ
i
i
t
t
ậ
ậ
p
p
c
c
á
á
c
c
xâu
xâu
th
th
à
à
nh
nh
chu
chu
ỗ
ỗ
i
i
văn
văn
b
b
ả
ả
n
n
duy
duy
nh
nh
ấ
ấ
t
t
.
.