Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
219,8 KB
Nội dung
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
minhdqtt@gmail.com
minhdqtt@gmail.com
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
[...]... trong C#- Editor: trì Editor: Đoàn Quang Minh Đoà 16 Tài liệu tham khảo Professional C#, Second Edition http://www.asp.net http://www.microsoft.com/net/default.mspx http://www.codeproject.com Địa chỉ download tài liệu http://www.thanglong.edu.vn/giang-day/tab.aspx Diễn đàn C# & NET http://www.thanglong.edu.vn/forum/cmd/0/categ ory/hoc-tap-nghien-cuu/dot-net/tab.aspx Lập trình nâng cao trong C#- Editor:... Sử dụng Stack s = new Stack(); s.Push (3) ; int x = s.Pop(); Lập trình nâng cao trong C#- Editor: trì Editor: Đoàn Quang Minh Đoà 13 Preprocessor Directives #define and #undef #if, #elif, #else, and #endif #warning and #error #region and #endregion #line Lập trình nâng cao trong C#- Editor: trì Editor: Đoàn Quang Minh Đoà 14 Memory Management C# tự động quản lý bộ nhớ nhờ vào bộ thu gom rác... Stack và heap Có 2 loại kiểu dữ liệu trong C# – Value Data Types: Dữ liệu chứa tại nơi nó được cấp phát vùng nhớ Các kiểu số, bool, char, date, các cấu trúc, các kiểu liệt kê – Reference Data Types: Chứa một con trỏ trỏ tới nơi cất giữ dữ liệu Bao gồm kiểu string, mảng, class, delegate Lập trình nâng cao trong C#- Editor: trì Editor: Đoàn Quang Minh Đoà 15 Unsafe Code C# tự quản lý bộ nhớ, tuy nhiên... xuất hiện nhằm mục đích xử lí chính xác kiểu của dữ liệu Ví dụ, với stack, nếu không có generics thì dữ liệu coi như các object, nên đòi hỏi phải ép kiểu khi xử lí, điều này có thể gây lỗi run-time Tạo và sử dụng Generics – Khai báo giống như template trong C++: dùng cặp dấu < > – Sử dụng: phải chỉ định chính xác kiểu dữ liệu Lập trình nâng cao trong C#- Editor: trì Editor: Đoàn Quang Minh Đoà 12 Generics... phát sinh một sự kiện, có thể bắt và xử lý sự kiện đó – Để hander sự kiện trong Windows Form hoặc trong Web Form: Khai báo component (ví dụ button) Khai báo hàm xử lý sự kiện Gắn hàm vào sự kiện Lập trình nâng cao trong C#- Editor: trì Editor: Đoàn Quang Minh Đoà 11 Generics Generics – Cho phép class, struct, interface, method sử dụng kiểu dữ liệu mà nó lưu trữ như là tham số đầu vào – Khái niệm giống .
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#. 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: