Tải bản đầy đủ (.pdf) (8 trang)

...C07. Struct.pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (206.6 KB, 8 trang )

N gôn ngữ C #
T rần V ăn T èo


01/06/2006

N g ôn n g ữ C #

1


Struct
n
n
n




n
n
n

L à kiểu dữ liệu tự tạo, tư ơ ng tự như lớ p.
L à m ột dữ liệu kiểu trị.
K hông hổ trợ kế thừ a và hàm hủy.
S ử dụng struct đối vớ i các kiểu dữ liệu nhỏ, đơ n giản, có các
m ethod và property như kiểu dữ liệu bẩm sinh.
S ử dụng trong m ảng (array) sẽ hiệu quả hơ n về m ặt bộ nhớ ,
như ng kém hiệu quả trong các tập hợ p (collection), vì
collection cần có qui chiếu.


Khai báo struct.
T ạo đối tư ợ ng struct.
S truct và tính kế thừ a.

01/06/2006

N g ôn n g ữ C #

2


Khai báo Struct
n

Cú pháp:
pháp:

[access-modifiers] struct identifier [:interface-list]{ struct member}
using System;
public struct Location{
public int xVal;
public int yVal;
public Location(int x, int y){
this.xVal = x; this.yVal = y;
}
public override void ToString( ){
return String.Format (“{0 },{1}”,
xVal, yVal );
}
01/06/2006


N g ôn n g ữ C #

public int X
{
get{ return xVal; }
set{ xVal = value; }
}
public int Y
{
get { return yVal; }
set { yVal = value; }
}
}
3


Khai báo Struct
n

H àm k h ở i d ự n g và k ế th ừ a (constructor & inheritant)
• S truct không kế thừ a bất cứ class hay struct nào khác, và
không làm cơ sở cho m ộ t class.
• C ó thể thự c thi nhiều interface.
• N ếu có constructor thì phải có tham số.
• C ác thành viên của S truct không có bộ khở i gán (initializer).

interface IShape( ){
void Paint( );
} //End Interface IShape

struct Rectangle : IShape{
public void P ain t( ) { … }
private int x,y,z;
} //End struct Rectangle
01/06/2006

struct KeyValue{
private string key;
private string value;
public KeyValue( string key, string value ){
this.key = key; this.value = value;
}
} //End struct Keyvalue
N g ôn n g ữ C #

4


T ạo đối tư ợ ng S truct
n

S tru ct th u ộc k iểu trị:
trị:

• N gầm định kế thừ a từ object
object.. Nên khi override hàm
T oS tring() thì hàm này tự đư ợ c gọi khi trao cho hàm
W riteL ine(… ). Location loc = new Location (200, 300);
Console.WriteLine( “L ocation: {0}”, loc );
• L à tham trị.

static void Main( ){
Location loc = new Location( 200, 300 );
myFunc( loc ); // loc.X = ? ; loc.Y = ?
} //End Main.
public void myFunc(Location loc){
loc.X = 100 ; loc.Y = 200;
} //end myFunc
01/06/2006
N g ôn n g ữ C #
5


T ạo đối tư ợ ng S truct
n

T ạo đối tư ợ ng S truct không dùng từ khó a new
new::
• S truct là kiểu trị nên có thể tạo m ột đối tư ợ ng struct không
cần từ khóa new (giống như các kiểu bẩm sinh:int, long..)
 K hông triệu gọi hàm khở i dự ng (constructor).
 P hải khở i gán các biến thành viên trư ớ c khi triệu gọi các
hàm.
static void Main( ){

Location loc;
static void Main( ){
loc.xVal = 50; //gán thành viên
Location loc;
loc.yVal = 10; //gán thành viên
//không triệu gọi constructor

loc.X = 200; //dùng thuộc tính
loc.xVal = 50;
loc.Y = 300;//dùng thuộc tính
//loc.yVal = 100;
Console.WriteLine(“{0}”,loc);
Console.WriteLine(“{0}”,loc);
01/06/2006
N g ôn n g ữ C #
6
}
//End
Main.
} //End Main.


T ạo đối tư ợ ng S truct
n

S tru ct và tín h k ế th ừ a:
a:






N gầm kế thừ a từ object
object..
K hông dùng từ khóa abstract và sealed
sealed..

B iến thành viên không có từ khóa protected
protected..
C ác hàm k hôn g có từ k h ó a abstract và virtual
virtual..
T ừ khóa override chỉ sử dụng cho các h àm m u ố n
o v erride các hàm đư ợ c kế thừ a từ đối tư ợ n g object
object..

01/06/2006

N g ôn n g ữ C #

7


Q&A

01/06/2006

N g ôn n g ữ C #

8



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×