You are on page 1of 16

C# Fast Food

http://hoclaptrinh.vn/C-C++-Visual-C/C-Fast-Food/In.html

C# Fast Food
Th ba, 19 Thng 8 2008 05:39 Trn Phm thanh Tng C - C++ - Visual C#

Bi vit ny dnh cho nhng bn thng tho v C++ v mun tip cn C# mt cch nhanh chng. Tuy nhin, nhng bn mi bt u hc C# cng c th xem n nh l mt bn tm tt v C# nhm nh hng tt hn trong vic hc ngn ng ny. Gii thiu C# l mt ngn ng mang nhng c im ca C++, c phong cch lp trnh nh Java v c m hnh ng dng nh Basic. Nu bit v C++ th cc bn s mt khng di mt gi tm hiu c php ca C#. Cn nu cc bn quen thuc vi Java th s l mt li th khc khi hc C#. Cu trc chng trnh Java, khi nim v gi (package), garbage collection chc chn s gip bn hc C# nhanh hn. Trong bi vit ny, khi chng ta ni v cc cu trc ca C#, ti s xem nh cc bn bit C++. Bi vit ny s ni v cc cu trc v nhng c im ca ngn ng C#, minh ha bng nhng v d ngn gn v d hiu khi cc bn nhn vo v d, cc bn c th hiu r nhng khi nim. Trong bi vit ny , chng ta s bn v nhng ch sau:

Cu trc chng trnh Namespaces Kiu d liu Bin Ton t v biu thc Kiu lit k Cu lnh Class v Struct Modifier Cc thuc tnh (Property) Interface Cc thng s hm Mng (array) Indexer Boxing v Unboxing Delegate Tha k v tnh a hnh Chng ta s khng bn v cc vn nh: C# thng dng hn hay C++ thng dng hn, cc khi nim garbage collection, threading, x l file chuyn kiu d liu, th vin .Net. Cu trc chng trnh Cng nh C++, C# thuc dng case sensitive (phn bit ch hoa v ch thng). Du chm phy (;) l k hiu ngn cch cc pht biu. Khng nh C++, trong C# khng c s phn chia gia phn khai bo (header) v phn hin thc (cpp). Mi on m (khai bo class v hin thc) u c t trong mt file c phn m rng .cs. By gi chng ta lm quen vi chng trnh u tin ca C#, chng trnh Hello world: using System; namespace MyNameSpace { class HelloWorld { static void Main(string[] args) { Console.WriteLine (Hello World); } } }

Trong C#, tt c cc cu lnh, phng thc c gi trong mt class, v tt c cc class c gi trong mt namespace (ging nh file trong folder). Cng nh C++, c mt chng trnh chnh cha nhng im nhp cho chng

1 of 16

9/15/2008 5:12 PM

C# Fast Food

http://hoclaptrinh.vn/C-C++-Visual-C/C-Fast-Food/In.html

trnh ca bn. Chng trnh chnh ca C++ c bt u bng main, trong khi chng trnh chnh ca C# bt u vi Main. Khng cn t du chm phy sau mt khi class hay sau nh ngha struct. l quy nh ca C++, C# th khng cn.

Namespaces Mi class c gi li trong mt namespace. Tht ra, namespaces l mt khi nim trong C++, nhng trong C# chng ta dng namespaces thng xuyn hn. Cc bn c th truy xut mt class trong mt namespaces bng cch dng du chm (.). MyNameSpace l namespace ca chng trnh Hello world trn. By gi chng ta hy vit li chng trnh HelloWorld bng cch truy xut lp HelloWorld t mt lp khc trong mt namespaces khc:

using System; namespace AnotherNameSpace { class AnotherClass { public void Func() { Console.WriteLine (Hello World); } } }

By gi t lp HelloWorld, cc bn c th truy xut n:

using System; using AnotherNameSpace; namespace MyNameSpace { class HelloWorld { static void Main(string[] args) { AnotherClass obj = new AnotherClass(); obj.Func(); } } } Trong th vin .Net, System l namespace cp cao nht trong cc namespace. Trong C#, bng cch mc nh tn ti mt namespace ton cc, mt class nh ngha bn ngoi mt namespace c lu trc tip trong namespace ton cc ny v do bn c th truy xut lp ny m khng cn bt k mt qualifier (b t) no. Bn cng c th nh ngha nhng namespace lng nhau.

--Using Ch th #include trong C++ c thay th bi t kha using, theo sau l tn ca mt namespace, chng hn nh using System. System l mt namespace nn trong cha tt c nhng namespace khc v tt c cc lp c nh ngha trong nhng namespace . Lp nn cho mi i tng l Object trong namespace System.

2 of 16

9/15/2008 5:12 PM

C# Fast Food

http://hoclaptrinh.vn/C-C++-Visual-C/C-Fast-Food/In.html

----Bin Cc bin trong C# hu ht u ging trong C++, ngoi tr nhng khc bit sau: Bin trong C# lun cn phi khi to trc khi bn truy xut n, nu khng bn s b bo li trong khi bin dch. Do , phi nh rng khng th truy xut mt bin cha c khi to. Bn khng th truy xut mt con tr khng tr vo u c trong C#. Mt biu thc khng th gi mt phn t ca mng (array) m ch s ca n vt ra khi kch thc ca mng. Khng c khi nim bin ton cc hay hm ton cc trong C# v nhng khi nim v ton cc c biu din thng qua nhng hm v bin static ---Kiu d liu Tt c nhng kiu d liu ca C# c nh ngha trong lp Object. C hai loi kiu d liu: *Kiu d liu c bn (dng sn) *Kiu d liu do ngi dng nh ngha Di y l bng lit k cc kiu d liu nh sn trong trong C#: Kiu Byte Sbyte Short Ushort Int Uint Long Ulong Float Double 8 8 4 8 2 4 4 Kch thc M t 1 1 2 unsigned byte signed byte signed short unsigned short signed integer unsigned integer signed long unsigned long floating point double precision

Decimal 8 fixed precision String unicode string Char unicode char Bool true, false boolean

Ghi ch: Kch thc ca cc kiu d liu trong C++ v C# khng ging nhau, v d nh kiu long trong C++ l 4 byte , trong C# l 8 byte. Kiu bool v string cng khc nhau, kiu bool trong C# ch chp nhn gi tr true hay false ch khng chp nhn gi tr integer. Kiu d liu do ngi dng nh ngha bao gm: 1.Class 2.Struct 3.Interface Nu phn chia kiu d liu theo s cp pht b nh th ta c th chia lm hai loi: 1.Kiu gi tr 2.Kiu tham kho Kiu gi tr Kiu gi tr l nhng d liu c cp pht b nh trong stack. Cc loi d liu ny bao gm: Tt c nhng kiu d liu dng sn ngoi tr kiu string. Struct Kiu lit k Kiu tham kho Kiu tham kho c cp pht b nh trn heap v s tr thnh rc khi chng khng c s dng na. khai bo kiu d liu ny, ta dng t kha new, v khng nh C++, khng c t kha delete . Trong C#, chng t ng c gom li bi b phn thu thp rc (garbage collector). --Kiu tham kho bao gm: Class Interface Kiu tp hp nh mng String --Kiu lit k (Enumeration) Kiu lit k trong C# hon ton ging nh C++, chng c nh ngha thng qua t kha enum V d nh: enum Weekdays

3 of 16

9/15/2008 5:12 PM

C# Fast Food

http://hoclaptrinh.vn/C-C++-Visual-C/C-Fast-Food/In.html

{ Saturday, Sunday, Monday Tuesday, Wednesday, Thursday, Friday }

Class v Struct Class v Struct cng tng t nh C++, ngoi tr s khc nhau v s cp pht b nh. Nhng i tng ca class c cp pht b nh trong heap v c to ra bng cch dng new, cn struct c cp pht b nh trong stack. Struct trong C# l kiu d liu rt nh v nhanh. Do i vi nhng kiu d liu nng bn nn khai bo class. By gi chng ta quan st v d sau: struct Date { int day; int month; int year; }

class Date { int day; int month; int year; string weekday; string monthName; public int GetDay() { return day; } public int GetMonth() { return month; } public int GetYear() { return year; } public void SetDay(int Day) { day = Day ; } public void SetMonth(int Month) { month = Month; } public void SetYear(int Year) { year = Year; } public bool IsLeapYear() { return (year/4 == 0);

4 of 16

9/15/2008 5:12 PM

C# Fast Food

http://hoclaptrinh.vn/C-C++-Visual-C/C-Fast-Food/In.html

} public void SetDate (int day, int month, int year) { } ... } Cc thuc tnh Nu bn quen thuc vi hng i tng trong C++, bn t hn phi c cht khi nim g v thuc tnh (properties). Cc thuc tnh trong v d class Date trn l day, month v year. Nu trong C++, bn phi dng phng thc Get v Set th C# cung cp nhng cch thun tin hn, n gin hn v trc tip hn truy xut nhng thuc tnh. i vi v d trn ta c th vit li nh sau:

using System; class Date { public int Day{ get { return day; } set { day = value; } } int day; public int Month{ get { return month; } set { month = value; } } int month;

public int Year{ get { return year; } set { year = value; } } int year;

public bool IsLeapYear(int year) { return year%4== 0 ? true:false; }

5 of 16

9/15/2008 5:12 PM

C# Fast Food

http://hoclaptrinh.vn/C-C++-Visual-C/C-Fast-Food/In.html

public void SetDate (int day, int month, int year) { this.day = day; this.month = month; this.year = year; } } Sau y l cch bn ly v thit lp thuc tnh: class User { public static void Main() { Date date = new Date(); date.Day = 27; date.Month = 6; date.Year = 2003; Console.WriteLine(Date: {0}/{1}/{2},date.Day, date.Month, date.Year); } } B t (Modifier) Trong C++, chng ta gp cc b t thng dng nh public, private v protected. Sau y chng ta s ni v mt s b t mi trong C#. Readonly readonly ch c dng cho nhng d liu thnh vin (member) ca class. D liu readonly ch c th c c khi chng c khi to trc tip hay gn gi tr cho chng trong constructor. S khc nhau gia d liu readonly v const (hng) l khi khai bo hng, ta phi khi to gi tr cho n mt cch trc tip. Hy nhn vo v d sau: class MyClass { //trc tip const int constInt = 100; //khng trc tip readonly int myInt = 5; readonly int myInt2; public MyClass() { // khng trc tip myInt2 = 8; } public Func() { myInt = 7; //khng hp l Console.WriteLine(myInt2.ToString()); } }

Sealed S dng t kha sealed khi khai bo mt class s khng cho php bn ly bt k class no t n. Do bn nn s dung t kha sealed cho nhng lp m bn khng mun nhng lp con tha k chng. sealed class CanNotbeTheParent

6 of 16

9/15/2008 5:12 PM

C# Fast Food

http://hoclaptrinh.vn/C-C++-Visual-C/C-Fast-Food/In.html

{ int a = 5; }

Unsafe Bn c th nh ngha mt ng cnh khng an ton trong C# bng cch dng t kha unsafe. Trong ng cnh khng an ton, bn c th vit mt on m khng an ton, v d nh con tr C++ chng hn. Chng ta hy xem xt v d sau:

public unsafe MyFunction( int * pInt, double* pDouble) { int* pAnotherInt = new int; *pAnotherInt = 10; pInt = pAnotherInt; ... *pDouble = 8.9; }

Interface Nu bn c khi nim v COM, bn s d dng hiu c ni dung ca phn ny. Mt interface l mt lp tru tng c bn, trong ch cha nhng k hiu ca hm, s hin thc nhng hm ny c cung cp bi nhng lp con. Trong C#, bn c th nh ngha nhng class nh nhng interface thng qua t kha interface. .NET c nn tng t nhiu interface. Trong C# bn khng th dng nhiu lp tha k, iu m trong C++ cho php, nhng tht ra bn cht ca s a tha k c thc hin thng qua interface. Nhng lp con ca bn cng c th hin thc a interface.

using System; interface myDrawing { int originx { get; set; } int originy { get; set; } void Draw(object shape); } class Shape: myDrawing { int OriX; int OriY; public int originx { get{ return OriX; } set{

7 of 16

9/15/2008 5:12 PM

C# Fast Food

http://hoclaptrinh.vn/C-C++-Visual-C/C-Fast-Food/In.html

OriX = value; } } public int originy { get{ return OriY; } set{ OriY = value; } } public void Draw(object shape) { ... } public void MoveShape(int newX, int newY) { ..... } }

---Mng Mng trong C# c nhiu tnh nng vt tri hn so vi C++. Mng c cp pht b nh trong heap v do n c truyn bng tham kho. Bn khng th truy xut mt phn t vt ngoi gii hn trong mt mng (c ch s ln hn s phn t trong mng). Do C# khc phc li ny. Ngoi ra C# cn cung cp mt s hm tr gip x l cc phn t trong mng. Ta c th thy r s khc nhau gia c php ca mng trong C++ v C# l: Du ngoc vung c t sau tn kiu ch khng phi sau tn bin. Bn c th to vng nh cho phn t trong mng bng cch dng t kha new. Ngoi ra C# cn h tr vic hin thc mng mt chiu (single dimensional), a chiu (multi dimensional) v jagged array (mng ca mng). V d nh:

// mng mt chiu n gin int[] array = new int[10]; for (int i = 0;i < array.Length; i++) array[i] = i; // mng hai chiu int[,] array2 = new int[5,10]; array2[1,2] = 5; // mng 3 chiu int[,,] array3 = new int[5,10,5]; array3[0,2,4] = 9; // mng ca mng int[][] arrayOfarray = = new int[2]; arrayOfarray[0] = new int[4]; arrayOfarray[0] = new int[] {1,2,15};

----Indexer Indexer c dng vit mt phng thc truy xut trc tip mt phn t t mt tp hp bng cch dng du [ ], nh trong mng. Vic bn cn lm ch l ch r ch s truy xut mt phn t. C php ca mt indexer cng ging nh ca thuc tnh mt class, ngoi tr chng cn mt thng s nhp, chnh l ch s ca phn t cn truy xut. By gi chng ta tip tc tham kho mt v d cho vn ny. Trong v d sau bn s bt gp lp CollectionBase, l mt lp th vin dng to ra nhng tp hp. Danh sch (list) l mt protected member ca lp CollectionBase,

8 of 16

9/15/2008 5:12 PM

C# Fast Food

http://hoclaptrinh.vn/C-C++-Visual-C/C-Fast-Food/In.html

trong lu tr tp hp cc danh sch.

class Shapes: CollectionBase { public void add(Shape shp) { List.Add(shp); } //indexer public Shape this[int index] { get { return (Shape) List[index]; } set { List[index] = value ; } } }

Boxing/Unboxing Boxing l mt khi nim mi trong C#. Nh cp trn, mi kiu d liu, dng sn hay do ngi dng nh ngha, u c ly t mt lp c bn l Object trong namespace System. Do vic ng gi nhng kiu cn bn hay nguyn thy vo trong class Object c gi l boxing, v thao tc ngc li c gi l unboxing. V d nh:

class Test { static void Main() { int myInt = 12; // boxing object obj = myInt ; // unboxing int myInt2 = (int) obj; } }

V d trn cho ta thy c hai thao tc boxing v unboxing. Mt gi tr int c th c chuyn i thnh i tng v chuyn i tr li thnh int. Khi kiu d liu ca mt bin cn c chuyn thnh mt kiu truyn bng tham kho, mt object box c to ra cha gi tr, v gi tr c lu vo box. Unboxing ch l qu trnh ngc li. Khi mt object box c tr li thnh kiu nguyn thy , gi tr s c chuyn t box sang nh lu tr ban u. ---Thng s ca hm Trong C# c 3 loi thng s: 1.Thng s in/ truyn bng tr. 2.Thng s in out/truyn bng tham kho. 3.Thng s out. Nu bn nm r v COM interface v nhng kiu thng s ca n, bn s d dng hiu c cc kiu thng s ca C#. --Thng s in/ truyn bng tr Khi nim thng s truyn bng tr cng tng t nh trong C++. Gi tr truyn c chp vo mt nh v c truyn vo hm. V d:

9 of 16

9/15/2008 5:12 PM

C# Fast Food

http://hoclaptrinh.vn/C-C++-Visual-C/C-Fast-Food/In.html

SetDay(5); ... void SetDay(int day) { .... }

---Thng s in out/truynbng tham kho Thng s truyn bng tham kho trong C++ c truyn thng qua mt con tr hay ton t &. Trong C#, thng s truyn bng tham kho cn c gi l thng s in out, v khi bn truyn mt a ch tham kho ca mt nh, bn truyn mt gi tr nhp v ly mt gi tr xut t hm . Bn khng th truyn mt thng s cha khi to vo mt hm. C# dng t kha ref ch thng s truyn bng tham kho. Bn cng c th dng t kha ref cho mt i s trong khi truyn n vo mt hm c thng s truyn bng tham kho. V d:

int a= 5; FunctionA(ref a); Console.WriteLine(a); void FunctionA(ref int Val) { int x= Val; Val = x* 4; }

----Thng s out L thng s ch tr v gi tr l kt qu ca mt hm, khng i hi gi tr nhp. C# dng t kha out cho loi tham s ny. int Val; GetNodeValue(Val); bool GetNodeValue(out int Val) { Val = value; return true; }

---S lng cc thng s v mng truyn thng s l mt mng trong C#, ngi ta dng t kha params. Ch c th c mt i s kiu mng. Bn c th truyn phn t nh l mt i s ca mng . Tt nht, ta hy xem v d sau: void Func(params int[] array) { Console.WriteLine(number of elements {0}, array.Length); } Func(); Func(5); Func(7,9); Func(new int[] {3,8,10}); int[] array = new int[8] {1,3,4,5,5,6,7,5}; Func(array); ---Ton t v biu thc Hu ht cc ton t trong C# hon ton ging nh trong C++, do biu thc cng vy. Tuy nhin C# cn b sung thm

10 of 16

9/15/2008 5:12 PM

C# Fast Food

http://hoclaptrinh.vn/C-C++-Visual-C/C-Fast-Food/In.html

mt s ton t mi v hu ch. Chng ta s xem xt vi ton t trong s . ---Ton t is Ton t ny c dng kim tra xem kiu ca cc ton hng c tng ng hay khng. Ton t is thng c s dng trong kch bn a ng cnh. Ton t ny c hai ton hng v kt qu tr v c kiu bool. Chng ta xem v d sau: void function(object param) { if(param is ClassA) // something else if(param is MyStruct) //something } }

---Ton t as Ton t as kim tra xem kiu ca cc ton hng c kh i hay khng, nu c th kt qu tr v l mt i tng c chuyn i hay c box. Nu i tng khng chuyn i hay box c, kt qu tr v null. Chng ta xem v d sau hiu r hn v khi nim ny:

Shape shp = new Shape(); //kt qu l null, khng chuyn i //kiu c Vehicle veh = shp as Vehicle; Circle cir = new Circle(); Shape shp = cir; //s c chuyn i Circle cir2 = shp as Circle; object[] objects = new object[2]; objects[0] = Aisha; object[1] = new Shape(); string str; for(int i=0; i&< objects.Length; i++) { str = objects[i] as string; if(str == null) Console.WriteLine(can not be converted); else Console.WriteLine({0},str); } ----Cu lnh a s cc cu lnh trong C# u tng t nh trong C++, ngoi ra cn c mt s cu lnh mi c b sung v c mt vi s sa i trong mt s cu lnh c. Sau y l mt s cu lnh mi: foreach: dng cho vic thc hin vng lp cho mt tp hp nh mng V d: foreach (string s in array) Console.WriteLine(s);

lock: dng bao mt on code thnh mt section. checked/unchecked: dng kim tra trn trong cc ton t c i s l s. V d nh: int x = Int32.MaxValue; x++;

11 of 16

9/15/2008 5:12 PM

C# Fast Food

http://hoclaptrinh.vn/C-C++-Visual-C/C-Fast-Food/In.html

{ x++; } unchecked { x++; } }

---Switch Trong C#, cu lnh switch c thay i nh sau: 1.Sau khi thc thi mt cu lnh case, chng trnh s khng nhy n cu lnh case k tip. V d:

int var = 100; switch (var) { case 100: Console.WriteLine(<Value is 100>); // khng dng break case 200: Console.WriteLine(<Value is 200>); break; }

Trong C++, kt qu s l: <Value is 100><Value is 200> Trong C#, bn s nhn c thng bo li sau: error CS0163: Control cannot fall through from one case label (case 100:) to another

Tuy nhin, bn c th lm nh sau: switch (var) { case 100: case 200: Console.WriteLine(100 or 200<VALUE is 200>); break; }

2.Bn cng c th dng hng trong gi tr ca case. V d nh: const string WeekEnd = Sunday; const string WeekDay1 = Monday; .... string WeekDay = Console.ReadLine(); switch (WeekDay ) { case WeekEnd: Console.WriteLine(Its weekend!!); break; case WeekDay1:

12 of 16

9/15/2008 5:12 PM

C# Fast Food

http://hoclaptrinh.vn/C-C++-Visual-C/C-Fast-Food/In.html

Console.WriteLine(Its Monday); break; }

----Delegate Delegate cho php chng ta lu s tham kho hm vo mt bin. Trong C++, vic ny ging nh dng v lu con tr hm v chng ta hay dng typedef. V d:

delegate int Operation(int val1, int val2); public int Add(int val1, int val2) { return val1 + val2; }

public int Subtract (int val1, int val2) { return val1- val2; }

public void Perform() { Operation Oper; Console.WriteLine(Enter + or - ); string optor = Console.ReadLine(); Console.WriteLine(Enter 2 operands); string opnd1 = Console.ReadLine(); string opnd2 = Console.ReadLine(); int val1 = Convert.ToInt32 (opnd1); int val2 = Convert.ToInt32 (opnd2); if (optor == +) Oper = new Operation(Add); else Oper = new Operation(Subtract); Console.WriteLine( Result ={0}, Oper(val1, val2)); }

Tnh tha k v tnh a hnh Trong C# ch cho php s tha k n. Nu bn mun thc hin a tha k, bn c th dng interface. V d:

class Parent{ } class Child : Parent

Hm o T khi nim hm o n hin thc khi nim a hnh trong C# l nh nhau, ngoi tr vic bn dng t kha override i vi vic hin thc hm o trong lp con. Lp cha vn s dng t kha virtual. Lp no override phng thc o cng s dng t kha override.

13 of 16

9/15/2008 5:12 PM

C# Fast Food

http://hoclaptrinh.vn/C-C++-Visual-C/C-Fast-Food/In.html

class Shape { public virtual void Draw() { Console.WriteLine(Shape.Draw); } }

class Rectangle : Shape { public override void Draw() { Console.WriteLine(Rectangle.Draw); } }

class Square : Rectangle { public override void Draw() { Console.WriteLine(Square.Draw); } }

class MainClass { static void Main(string[] args) { Shape[] shp = new Shape[3]; Rectangle rect = new Rectangle(); shp[0] = new Shape(); shp[1] = rect; shp[2] = new Square(); shp[0].Draw(); shp[1].Draw(); shp[2].Draw(); } } Xut ra kt qu nh sau:

Shape.Draw Rectangle.Draw Square.Draw

n lp cha bng cch dng new Trong mt lp con, bn c th nh ngha mt hm mi, n vi lp cha, bng cch dng t kha new. Trong v d di y, l bn sa i ca v d trn, ti thay th t kha override bng t kha new trong lp Rectangle. class Shape

14 of 16

9/15/2008 5:12 PM

C# Fast Food

http://hoclaptrinh.vn/C-C++-Visual-C/C-Fast-Food/In.html

{ public virtual void Draw() { Console.WriteLine(Shape.Draw); } } class Rectangle : Shape { public new void Draw() { Console.WriteLine(Rectangle.Draw); } }

class Square : Rectangle { public new void Draw() { Console.WriteLine(Square.Draw); } } class MainClass { static void Main(string[] args) { Console.WriteLine(Using Polymorphism:); Shape[] shp = new Shape[3]; Rectangle rect = new Rectangle(); shp[0] = new Shape(); shp[1] = rect; shp[2] = new Square(); shp[0].Draw(); shp[1].Draw(); shp[2].Draw(); Console.WriteLine(Using without Polymorphism:); rect.Draw(); Square sqr = new Square(); sqr.Draw(); } } Kt qu xut ra nh sau: Using Polymorphism Shape.Draw Shape.Draw Shape.Draw Using without Polymorphism: Rectangle.Draw Square.Draw

Trong v d trn, phng thc Draw ca lp Rectangle khng phi l dng a hnh ca phng thc Draw trong lp Shape. Thay v vy, n c xem nh l mt phng thc khc. Do , trnh s trng tn gia lp cha v lp con, ta

15 of 16

9/15/2008 5:12 PM

C# Fast Food

http://hoclaptrinh.vn/C-C++-Visual-C/C-Fast-Food/In.html

nn dng t kha new. Lu : bn khng th dng hai phng thc cng tn trong cng mt lp nu mt phng thc dng t kha new, phng thc kia dng override hay virtual. Do trong lp Square, ti khng th override phng thc Draw ca lp Shape . Gi nhng member ca lp cha Nu lp con c d liu member cng tn vi d liu trong lp cha, trnh b trng tn, d liu v hm member ca lp cha c truy xut thng qua t kha base. Trong v d sau, hy xem cch constructor ca lp cha c gi v d liu member c dng:

public Child(int val) :base(val) { myVar = 5; base.myVar; }

Hay public Child(int val) { base(val); myVar = 5 ; base.myVar; } Bi vit ny ch gii thiu mt cch rt tng qut v ngn ng C# cc bn c th quen vi nhng c trng c bn ca ngn ng. Mc d c gng cp n hu ht nhng khi nim chnh trong C#, nhng ti ngh vn cn rt nhiu th khc cn thm vo v bn n. (Theo: Trn Phm thanh Tng - Bo Hc Lp Trnh) Ngun: tincntt.com

16 of 16

9/15/2008 5:12 PM

You might also like