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
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
ụ
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
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
–
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
ệ
–
–
C
C
á
á
c ngo
c ngo
ạ
ạ
i l
i l
ệ
ệ
đ
đ
ề
ề
u k
u k
ế
ế
th
th
ừ
ừ
a t
a t
ừ
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
ặ
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
ệ
ệ
ph
ph
ù
ù
h
h
ợ
ợ
p, c
p, c
ó
ó
th
th
ể
ể
xây d
xây d
ự
ự
ng l
ng l
ớ
ớ
p
p
ngo
ngo
ạ
:
Đ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
à
}
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
ầ
nh
thư
thư
ờ
ờ
ng
ng
Ph
Ph
ầ
ầ
n
n
catch
catch
x
x
ử
ử
lý
lý
c
c
á
á
c
c
ngo
ngo
ạ
N
ế
ế
u
u
không
không
s
s
ử
ử
d
d
ụ
ụ
ng
ng
ngo
ngo
ạ
ạ
i
i
l
l
ệ
ệ
n
n
é
ố
i
i
tư
tư
ợ
ợ
ng
ng
đ
đ
ó
ó
.
.
–
–
C
C
ó
ó
th
th
ể
ể
c
c
ó
ó
nhi
,
khi
khi
đ
đ
ó
ó
m
m
ỗ
ỗ
i
i
ph
ph
ầ
ầ
n
n
catch
catch
x
x
ử
ử
lý
lý
m
m
ộ
i
l
l
ệ
ệ
c
c
ó
ó
th
th
ể
ể
đư
đư
ợ
ợ
c
c
n
n
é
é
m
m
l
l
ạ
ạ
i
th
ự
ự
c
c
thi
thi
c
c
á
á
c
c
l
l
ệ
ệ
nh
nh
k
k
ế
ế
t
t
th
th
ú
ú
c
trong
vi
vi
ệ
ệ
c
c
x
x
ử
ử
lý
lý
t
t
ậ
ậ
p
p
tin
tin
–
–
Ph
Ph
ầ
ầ
n
n
try
đ
ọ
ọ
c
c
ghi
ghi
b
b
ì
ì
nh
nh
thư
thư
ờ
ờ
ng
ng
–
–
Ph
Ph
ầ
ầ
n
n
catch
catch
x
u
file
file
đư
đư
ợ
ợ
c
c
m
m
ở
ở
th
th
ì
ì
ph
ph
ả
ả
i
i
đ
đ
ó
ó
ng
ng
l
User
-
-
Defined Casts
Defined Casts
To
To
á
á
n
n
t
t
ử
ử
é
é
p
p
ki
ki
ể
ể
u
u
as
as
Ch
Ch
ú
trong
C#
C#
–
–
C
C
ó
ó
2
2
lo
lo
ạ
ạ
i
i
é
é
p
p
ki
ki
ể
ể
u
u
trong
trong
C#: implicit (an
i
ro
ro
)
)
–
–
C
C
ó
ó
th
th
ể
ể
é
é
p
p
ki
ki
ể
ể
u
u
t
t
ừ
ừ
l
ở
, song
, song
không
không
th
th
ể
ể
l
l
à
à
m
m
ngư
ngư
ợ
ợ
c
c
l
l
ạ
ạ
i
i
–
–
C
a
2
2
l
l
ớ
ớ
p
p
,
,
khi
khi
đ
đ
ó
ó
c
c
ầ
ầ
n
n
khai
khai
b
b
á
á
o
(
conv
conv
-
-
type
type
-
-
in
in
operand
operand
)
)
public static explicit operator
public static explicit operator
conv
conv
-
-
type
type
-
-
out
out
(
(
conv
Đ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
,
ch
ch
ỉ
ỉ
x
x
á
á
c
c
đ
đ
ị
ị
nh
nh
l
l
ú
ú
c
c
th
th
ự
ự
c
c
thi
qu
á
á
t
t
,
,
v
v
í
í
d
d
ụ
ụ
s
s
ắ
ắ
p
p
x
x
ế
ế
p
p
:
:
không
á
nh
nh
2
2
đ
đ
ố
ố
i
i
tư
tư
ợ
ợ
ng
ng
b
b
ấ
ấ
t
t
k
k
ỳ
ỳ
–
–
delegate
class (
trong
trong
C#),
C#),
v
v
ề
ề
ý
ý
ngh
ngh
ĩ
ĩ
a
a
gi
gi
ố
ố
ng
ng
con
con
tr
tr
ỏ
ỏ
h
(
[
[
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
}
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);
}
}
}
ự
ki
ki
ệ
ệ
n
n
–
–
Đư
Đư
ợ
ợ
c
c
s
s
ử
ử
d
d
ụ
ụ
ng
ng
đ
đ
ể
ể
b
ó
x
x
ả
ả
y
y
ra
ra
.
.
–
–
Trong
Trong
Windows,
Windows,
c
c
ó
ó
r
r
ấ
ấ
t
t
nhi
nhi
ề
t
d
d
ạ
ạ
ng
ng
đ
đ
ặ
ặ
c
c
bi
bi
ệ
ệ
t
t
c
c
ủ
ủ
a
a
delegate
delegate
[
[
attributes
member
-
-
name
name
{
{
accessor
accessor
-
-
declarations
declarations
};
};
Ph
Ph
á
á
t
t
sinh
sinh
s
s
ự
ự
ki
ki
ệ
ệ
n
n
,
,
đ
đ
ặ
ặ
t
t
tên
tên
l
l
à
à
EventName
EventName
EventArgs
EventArgs
,
,
k
k
ế
ế
th
th
ừ
t
delegates
delegates
cho
cho
s
s
ự
ự
ki
ki
ệ
ệ
n
n
,
,
đ
đ
ặ
ặ
t
t
tên
tên
l
l
à
à
EventName
á
o
o
s
s
ự
ự
ki
ki
ệ
ệ
n
n
Khai
Khai
b
b
á
á
o
o
m
m
ộ
ộ
t
t
phương
phương
th
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
ử
ph
á
á
t
t
sinh
sinh
m
m
ộ
ộ
t
t
s
s
ự
ự
ki
ki
ệ
ệ
n
n
,
,
c
c
ó
ó
th
đ
ó
ó
.
.
–
–
Đ
Đ
ể
ể
hander
hander
s
s
ự
ự
ki
ki
ệ
ệ
n
n
trong
trong
Windows Form
Windows Form
ho
ho
ặ
b
á
á
o
o
h
h
à
à
m
m
x
x
ử
ử
lý
lý
s
s
ự
ự
ki
ki
ệ
ệ
n
n
G
G
ắ
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
é
li
ệ
ệ
u
u
m
m
à
à
n
n
ó
ó
lưu
lưu
tr
tr
ữ
ữ
như
như
l
l
à
à
tham
tham
s
s
ố
gi
ố
ố
ng
ng
như
như
template
template
c
c
ủ
ủ
a
a
C++.
C++.
–
–
Generics
Generics
xu
xu
ấ
ấ
t
t
hi
hi
ệ
ch
í
í
nh
nh
x
x
á
á
c
c
ki
ki
ể
ể
u
u
c
c
ủ
ủ
a
a
d
d
ữ
ữ
li
li
ệ
không
c
c
ó
ó
generics
generics
th
th
ì
ì
d
d
ữ
ữ
li
li
ệ
ệ
u
u
coi
coi
như
như
c
c
á
á
c
khi
x
x
ử
ử
l
l
í
í
,
,
đi
đi
ề
ề
u
u
n
n
à
à
y
y
c
c
ó
ó
th
th
ể
d
ụ
ụ
ng
ng
Generics
Generics
–
–
Khai
Khai
b
b
á
á
o
o
gi
gi
ố
ố
ng
ng
như
như
template
template
trong
trong
C++:
ụ
ng
ng
:
:
ph
ph
ả
ả
i
i
ch
ch
ỉ
ỉ
đ
đ
ị
ị
nh
nh
ch
ch
í
í
nh
nh
x
x
á
-
Editor
Editor
:
:
Đo
Đo
à
à
n Quang Minh
n Quang Minh
13
13
Generics
Generics
V
V
í
í
d
d
ụ
ụ
s
s
ử
ử
d
d
ụ
ậ
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
Đ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
c
–
–
B
B
ộ
ộ
nh
nh
ớ
ớ
ả
ả
o
o
trong
trong
Windows
Windows
–
–
Stack
Stack
v
v
à
à
heap
heap
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
ớ
C
C
á
á
c
c
ki
ki
ể
ể
u
u
s
s
ố
ố
,
,
bool
bool
, char, date,
, char, date,
c
c
á
á
c
c
c
t
kê
kê
–
–
Reference Data Types:
Reference Data Types:
Ch
Ch
ứ
ứ
a
a
m
m
ộ
ộ
t
t
con
con
tr
tr
ỏ
ỏ
tr
tr
ỏ
ỏ
t
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#
lý
b
b
ộ
ộ
nh
nh
ớ
ớ
,
,
tuy
tuy
nhiên
nhiên
c
c
ó
ó
nh
nh
ữ
ữ
ng
ng
l
l
ú
ú
c
ỏ
.
.
–
–
D
D
ù
ù
ng
ng
t
t
ừ
ừ
kh
kh
ó
ó
a
a
unsafe
unsafe
t
t
ạ
ạ
i
i
v
tr
ỏ
ỏ
–
–
Ph
Ph
ả
ả
i
i
c
c
ó
ó
tham
tham
s
s
ố
ố
biên
biên
d
d
ị
ị
ch
ch
unsafe
á
c
c
khai
khai
b
b
á
á
o
o
v
v
à
à
s
s
ử
ử
d
d
ụ
ụ
ng
ng
tương
tương
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
-
cuu/dot
cuu/dot
-
-
net/tab.aspx
net/tab.aspx