Professional Documents
Culture Documents
Chng 6:
NP CHNG TON T
Lp trnh Web
Ni dung
S dng t kha operator.
Lp trnh Web
s l cc ton hng. Vic to ton t cho mt lp cng ging nh vic np chng (overload) phng thc ca lp.
Ton t c khai bo vi t kha operator :
V d:
Lp trnh Web
public class PhanSo{ int tu; int mau; public PhanSo(int t, int m){ tu = t; mau = m; } public override string ToString(){ return tu.ToString()+"/"+mau.ToString(); } public static PhanSo operator *(PhanSo a, PhanSo b){ return new PhanSo(a.tu * b.tu, a.mau * b.mau); } static void Main(){ PhanSo a = new PhanSo(2, 3); PhanSo b = new PhanSo(4, 5); PhanSo c = a * b; Console.WriteLine(c.ToString()); }
}
Lp trnh Web
ng no cng h tr np chng ton t ( v d nh: Visual Basic, Java,) Vy lm th no gi thc hin ton t ca mt lp vit bng C# trong mt lp khng h tr np chng ton t?
trnh bin dch bin dch thnh mt phng thc tnh c bit trong ngn ng IL. Chi tit tn cc phng thc ca cc ton t nh trong bng sau:
C# Operator Symbol + ~ ++
+ += -
op_Decrement
op_Addition op_AdditionAssignment op_Subtraction
-=
* *= /
op_SubtractionAssignment
op_Multiply op_MultiplicationAssignment op_Division
C# Operator Symbol /= % %= ^ ^=
&
&= | |= &&
op_BitwiseAnd
op_BitwiseAndAssignment op_BitwiseOr op_BitwiseOrAssignment op_LogicalAnd
op_LogicalNot
<
> <=
op_LessThan
op_GreaterThan op_LessThanOrEqual
>=
=
op_GreaterThanOrEqual
op_Assign
n cng ko th chuyn code s dng k t + thnh gi phng thc op_Addition c. Do gi thc thi ton t + trong VB.NET ta gi thc thi phng thc Op_Addition
Csharp define operator +
generate
Op_Addition method
call Visual Basic
Public Class VBApp Public Shared Sub Main() Dim cs as new CSharpType() cs = CSharpType.op_Addition(cs, cs) End Sub End Class
S dng ton t
Np chng ton t c th lm cho m ngun ca chng ta
trc quan v nhng hnh ng ca lp m chng ta xy dng ging nh cc lp c xy dng sn. Vic np chng ton t cng c th lm cho m ngun phc tp mt cch kh qun l nu chng ta ph v cch th hin thng thng s dng nhng ton t. Np chng ton t c tnh cht i xng:
Khi ta nh ngha ton t == bt buc phi nh ngha != Tng t cho cc cp ton t: > v <, <= v >=
Lp trnh Web
14
l hon ton khc nhau. Khi nh ngha ton t == th cng nn nh ngha li phng thc Equal ca lp Object.
public override bool Equals(object o) { if (!(o is PhanSo)) { return false; } return this == (PhanSo)o; }
Lp trnh Web
15
kiu ny sang kiu khc. C php khai bo ton t chuyn kiu trong C#:
implicit
public + static +
thc hin ngm nh bi trnh bin dch. T kha explicit cho bit vic chuyn kiu ch c thc hin mt cch tng minh. V d:
class Rational {
// Constructs a Rational from an Int32
Bi tp
Xy dng lp Phn s vi cc php ton +,-,*,/,^, cc ton t so snh v ton t chuyn kiu tng minh t phn s sang s nguyn v ngm nh t s nguyn sang phn s. 2. Xy dng lp Vector trong khng gian 2 chiu vi cc php ton cng, tr, nhn, bng, cc ton t so snh...
1.
Lp trnh Web
20