You are on page 1of 17

C# and .

NET Framework
Bi 3: Lp trnh nng cao trong C#

on Quang Minh
minhdqtt@gmail.com
http://www.VTPortal.net
Last update: 21. Dec 2006

Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

Mc lc
Exceptions
User-Defined Casts
Delegates
Events
Generics
Preprocessor Directive
Unsafe code
Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

Errors and Exception Handling


Li lun lun tn ti, cho d h thng c thit k tt
th no

Li khng c quyn truy cp


Li do thit b hng (a li)
Li do ng truyn mng hng

Khi mt li xut hin, .NET s nm ra mt ngoi l


Cc ngoi l u k tha t lp Exception
Tt c cc ngoi l c bn u c cung cp bi .NET
Nu gp li, chng ta nn nm ra mt ngoi l c bit trong
c m t thng tin r rng v ngoi l
Nu khng tm c lp ngoi l ph hp, c th xy dng lp
ngoi l ca ring mnh

Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

Errors and Exception Handling

Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

Errors and Exception Handling


try
{

}
catch (Exception e)
{

}
finally
{

}
Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

Errors and Exception Handling


Phn try thc thi cc lnh bnh thng
Phn catch x l cc ngoi l c th xut hin
Nu khng s dng ngoi l nm ra, c th b qua phn i
tng .
C th c nhiu phn catch trong mt khi try catch, khi mi
phn catch x l mt ngoi l khc nhau.
Ngoi l c th c nm li bng t kha throw.

Phn finally thc thi cc lnh kt thc ca khi lnh.


V d trong vic x l tp tin

Phn try thc thi cc lnh nh m file, c ghi bnh thng


Phn catch x l li.
Phn finally, nu file c m th phi ng li
Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

User-Defined Casts
Ton t p kiu as
Chng ta thng xuyn phi p kiu trong C#
C 2 loi p kiu trong C#: implicit (an ton tuyt i),
explicit(c ri ro)
C th p kiu t lp k tha v lp c s, song
khng th lm ngc li
C th p kiu qua li gia 2 lp, khi cn khai bo
hm p kiu
public static implicit operator conv-type-out ( convtype-in operand )
public static explicit operator conv-type-out ( convtype-in operand )
Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

Delegates
delegate
C nhng cng vic khng xc nh lc bin dch, ch
xc nh lc thc thi.
Cc thut ton tng qut, v d sp xp: khng th
nh ngha phng thc so snh 2 i tng bt k
delegate l kiu tham chiu, ging nh class (trong
C#), v ngha ging con tr hm trong C++
[attributes] [modifiers] delegate result-type identifier
([formal-parameters]);

Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

Delegates
delegate void MyDelegate(int i);
class Program
{
public static void Main()
{
TakesADelegate(new MyDelegate(DelegateFunction));
}
public static void TakesADelegate(MyDelegate SomeFunction)
{
SomeFunction(21);
}
public static void DelegateFunction(int i)
{
System.Console.WriteLine("Called by delegate with number: {0}.", i);
}
}

Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

Events
S kin

c s dng bo hiu mt iu g xy ra.


Trong Windows, c rt nhiu s kin.
Trong C#, event l mt dng c bit ca delegate

[attributes] [modifiers] event type declarator; [attributes] [modifiers]


event type member-name {accessor-declarations};
Pht sinh s kin
nh ngha tham s s kin, t tn l EventNameEventArgs, k tha
t System.EventArgs.
nh ngha mt delegates cho s kin, t tn l
EventNameEventHandler.
Pht sinh s kin
Khai bo s kin
Khai bo mt phng thc OnEventName pht sinh s kin

Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

10

Events
X l s kin
Nu mt component pht sinh mt s kin, c
th bt v x l s kin .
hander s kin trong Windows Form hoc
trong Web Form:
Khai bo component (v d button)
Khai bo hm x l s kin
Gn hm vo s kin

Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

11

Generics
Generics
Cho php class, struct, interface, method s dng
kiu d liu m n lu tr nh l tham s u vo.
Khi nim ging nh template ca C++.
Generics xut hin nhm mc ch x l chnh xc
kiu ca d liu. V d, vi stack, nu khng c
generics th d liu coi nh cc object, nn i hi
phi p kiu khi x l, iu ny c th gy li run-time.

To v s dng Generics
Khai bo ging nh template trong C++: dng cp
du < >
S dng: phi ch nh chnh xc kiu d liu
Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

12

Generics
V d s dng Generics
Khai bo:

public class Stack<ItemType>


{
private ItemType[] items = new ItemType[100];
public void Push(ItemType data) {}
public ItemType Pop() {}
}
S dng

Stack<int> s = new Stack<int>();


s.Push(3);
int x = s.Pop();
Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

13

Preprocessor Directives
#define and #undef
#if, #elif, #else, and #endif
#warning and #error
#region and #endregion
#line

Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

14

Memory Management
C# t ng qun l b nh nh vo b thu gom
rc
B nh o trong Windows
Stack v heap

C 2 loi kiu d liu trong C#


Value Data Types:
D liu cha ti ni n c cp pht vng nh
Cc kiu s, bool, char, date, cc cu trc, cc kiu lit k

Reference Data Types:


Cha mt con tr tr ti ni ct gi d liu
Bao gm kiu string, mng, class, delegate
Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

15

Unsafe Code
C# t qun l b nh, tuy nhin c nhng
lc chng ta cn s dng con tr.
Dng t kha unsafe ti vng lnh mun s
dng con tr
Phi c tham s bin dch unsafe khi dch
chng trnh

Con tr:
Cc khai bo v s dng tng t C++
Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

16

Ti liu tham kho


Professional C#, Second Edition
http://www.asp.net
http://www.microsoft.com/net/default.mspx
http://www.codeproject.com
a ch download ti liu
http://www.thanglong.edu.vn/giang-day/tab.aspx
Din n C# & .NET
http://www.thanglong.edu.vn/forum/cmd/0/categ
ory/hoc-tap-nghien-cuu/dot-net/tab.aspx
Lp tr
trnh nng cao trong C# - Editor:
Editor:
o
on Quang Minh

17

You might also like